Buggy code:
public abstract class NodeImpl implements Serializable , Cloneable , Node , NodeList , EventTarget { static final long serialVersionUID = - 6316591992167219696L ; public static final short ELEMENT_DEFINITION_NODE = - 1 ; protected NodeImpl ownerNode ; protected short flags ; protected static final short READONLY = 1 << 0 ; protected static final short SYNCDATA = 1 << 1 ; protected static final short SYNCCHILDREN = 1 << 2 ; protected static final short OWNED = 1 << 3 ; protected static final short FIRSTCHILD = 1 << 4 ; protected static final short SPECIFIED = 1 << 5 ; protected static final short IGNORABLEWS = 1 << 6 ; protected static final short SETVALUE = 1 << 7 ; protected NodeImpl ( DocumentImpl ownerDocument ) { } public NodeImpl ( ) { } public abstract short getNodeType ( ) { } public abstract String getNodeName ( ) { } public String getNodeValue ( ) { } public void setNodeValue ( String x ) throws DOMException { } public Node appendChild ( Node newChild ) throws DOMException { } public Node cloneNode ( boolean deep ) { } public Document getOwnerDocument ( ) { } DocumentImpl ownerDocument ( ) { } void setOwnerDocument ( DocumentImpl doc ) { } public Node getParentNode ( ) { } NodeImpl parentNode ( ) { } public Node getNextSibling ( ) { } public Node getPreviousSibling ( ) { } ChildNode previousSibling ( ) { } public NamedNodeMap getAttributes ( ) { } public boolean hasChildNodes ( ) { } public NodeList getChildNodes ( ) { } public Node getFirstChild ( ) { } public Node getLastChild ( ) { } public Node insertBefore ( Node newChild , Node refChild ) throws DOMException { } public Node removeChild ( Node oldChild ) throws DOMException { } public Node replaceChild ( Node newChild , Node oldChild ) throws DOMException { } public int getLength ( ) { } public Node item ( int index ) { } public void normalize ( ) { } public boolean supports ( String feature , String version ) { <START_BUG> return getOwnerDocument ( ) . getImplementation ( ) . hasFeature ( feature , version ) ; <END_BUG> } public String getNamespaceURI ( ) { } public String getPrefix ( ) { } public void setPrefix ( String prefix ) throws DOMException { } public String getLocalName ( ) { } protected static final boolean MUTATIONEVENTS = true ; protected static final int MUTATION_NONE = 0 ; protected static final int MUTATION_LOCAL = 1 ; protected static final int MUTATION_AGGREGATE = 2 ; protected static final int MUTATION_ALL = 65535 ; Vector nodeListeners = null ; class LEntry { String type ; EventListener listener ; boolean useCapture ; LEntry ( String type , EventListener listener , boolean useCapture ) { } } public void addEventListener ( String type , EventListener listener , boolean useCapture ) { } public void removeEventListener ( String type , EventListener listener , boolean useCapture ) { } protected void finalize ( ) throws Throwable { } public boolean dispatchEvent ( Event event ) { } void dispatchEventToSubtree ( ChildNode n , Event e ) { } class EnclosingAttr { AttrImpl node ; String oldvalue ; } NodeImpl . EnclosingAttr getEnclosingAttr ( ) { } void dispatchAggregateEvents ( NodeImpl . EnclosingAttr ea ) { } void dispatchAggregateEvents ( AttrImpl enclosingAttr , String oldvalue ) { } public void setReadOnly ( boolean readOnly , boolean deep ) { } public boolean getReadOnly ( ) { } public void setUserData ( Object data ) { } public Object getUserData ( ) { } protected void changed ( ) { } protected int changes ( ) { } protected void synchronizeData ( ) { } final boolean readOnly ( ) { } final void readOnly ( boolean value ) { } final boolean syncData ( ) { } final void syncData ( boolean value ) { } final boolean syncChildren ( ) { } final void syncChildren ( boolean value ) { } final boolean owned ( ) { } final void owned ( boolean value ) { } final boolean firstChild ( ) { } final void firstChild ( boolean value ) { } final boolean specified ( ) { } final void specified ( boolean value ) { } final boolean ignorableWhitespace ( ) { } final void ignorableWhitespace ( boolean value ) { } final boolean setValue ( ) { } final void setValue ( boolean value ) { } public String toString ( ) { } private void writeObject ( ObjectOutputStream out ) throws IOException { } }

Fix:
return ownerDocument ( ) . getImplementation ( ) . hasFeature ( feature , version ) ;