The primary implementation (in Java terminology) of the Weavable interface is the haystack.object.Straw class. All derivative nodes and links extend (again, Java terminology) the Straw class. The Straw class contains three important data members, two StrawTies objects and a HaystackID object. One of the StrawTies objects maintains the pointers in the forward direction (i.e. Straws pointed at). The other maintains pointers to the back objects (i.e. Straws pointing to). We'll return to this shortly.
The Straw class is extended in a variety of ways, but is never instantiated on its own (that is, we never have an object of type Straw in a HDM graph). The key methods specified by the Weavable interface (and implemented by Straw) are described in the subsequent sections.