code: public Expression2 getSubexpression(int index) {
      Preconditions.checkArgument(index < size);
      if (index == 0) {
        return this;
      } else {
        int[] parts = findSubexpression(index);
        return subexpressions.get(parts[0]).getSubexpression(parts[1]);
      }
    }
docs: Gets the subexpression of {@code this} at position
  {@code index} in the syntax tree. Index 0 always
  returns {@code this}.
  
  @param index
  @return