public function schema($key = null, $value = null)
    {
        $numArgs = func_num_args();
        if (0 === $numArgs) {
            return $this->schema;
        } elseif (1 === $numArgs) {
            if (is_array($key)) {
                $this->schema = new NObject($key);
            } elseif ($this->schema->offsetExists($key)) {
                return $this->schema[$key];
            }
        } else {
            $this->schema[$key] = $value;
        }
    }