code: private static boolean isPropertyTree(Node expectedGetprop) {
      if (!expectedGetprop.isGetProp()) {
        return false;
      }
  
      Node leftChild = expectedGetprop.getFirstChild();
      if (!leftChild.isThis() && !isPropertyTree(leftChild)) {
        return false;
      }
  
      Node retVal = leftChild.getNext();
      return NodeUtil.getStringValue(retVal) != null;
    }
docs: Returns true if the provided node is a getprop for
  which the left child is this or a valid property tree
  and for which the right side is a string.