--- /dev/null
+# vim:ts=4:sw=4:expandtab
+package Con;
+
+use Moose;
+use MooseX::AttributeHelpers;
+use v5.10;
+
+has 'name' => (is => 'ro', isa => 'Str');
+has 'width' => (is => 'rw', isa => 'Int', default => 100);
+has '_nodes' => (is => 'ro', metaclass => 'Collection::Array', isa => 'ArrayRef[Con]',
+ default => sub { [] },
+ provides => {
+ 'push' => 'add_node',
+ elements => 'nodes',
+ }
+);
+has 'parent' => (is => 'rw', isa => 'Con', predicate => 'has_parent');
+
+__PACKAGE__->meta->make_immutable;
+
+1