code: public Node getNode(int index)
      {
          if (index == 0)
          {
              return this;
          }
          int conditionNodes = condition.countNodes();
          if (index <= conditionNodes)
          {
              return condition.getNode(index - 1);
          }
          else
          {
              int thenNodes = then.countNodes();
              if (index <= conditionNodes + thenNodes)
              {
                  return then.getNode(index - conditionNodes - 1);
              }
              else
              {
                  return otherwise.getNode(index - conditionNodes - thenNodes - 1);
              }
          }
      }
docs: {@inheritDoc}