+=head2 C<end>
+
+=cut
+
+sub end { $_[0]->point }
+
+LaTeX::TikZ::Interface->register(
+ point => sub {
+ shift;
+
+ my $point;
+ if (@_ == 0) {
+ $point = 0;
+ } elsif (@_ % 2) {
+ $point = shift;
+ } else { # @_ even, @_ >= 2
+ $point = [ shift, shift ];
+ }
+
+ __PACKAGE__->new(point => $point, @_);
+ },
+);
+
+LaTeX::TikZ::Functor->default_rule(
+ (__PACKAGE__) => sub {
+ my ($functor, $set, @args) = @_;
+ $set->new(
+ point => $set->point,
+ label => $set->label,
+ pos => $set->pos,
+ );
+ }
+);