public function appendParameter($parameter) {
    if (is_callable($parameter)) {
      $parameter = $parameter($this);
    }
    if (!($parameter instanceof ParameterNode)) {
      throw new \InvalidArgumentException();
    }
    $this->parameters->appendItem($parameter);
    return $this;
  }