public function offset_get_link($field)
    {
        $header_links = $this->links;

        if ($field === '$links') {
            $links = array();
            foreach ($header_links['*'] ?: $header_links as $key => $link) {
                if ($link['url']) {
                    $links[$key] = $this->link_url($key);
                }
            }
            return $links;
        }
        if (!array_key_exists($field, $this->link_data)) {
            if (parent::offsetExists($field)) {
                $value = parent::offsetGet($field);
                // Hack around link formulas
                // TODO: find a better way to differentiate from expanded links
                if ($header_links[$field]['url'] === '{'.$field.'}') {
                    unset($this[$field]);
                    return $this->offset_get_link($field);
                }
                if (is_array($value)) {
                    $this->link_data[$field] = Resource::instance(array(
                        '$url' => $this->link_url($field),
                        '$data' => $value,
                        '$links' => isset($header_links[$field]['links'])
                            ? $header_links[$field]['links'] : null
                    ));
                } else {
                    $this->link_data[$field] = $value;
                }
                return $this->link_data[$field];
            } else {
                // Avoid storing too much memory from links
                $mem_start = memory_get_usage();
                $link_url = $this->link_url($field);
                $link_data = array();
                if (isset(self::$client->default_limit)) {
                    $link_data['limit'] = self::$client->default_limit;
                }
                $result = $this->client()->get($link_url, $link_data);
                $mem_total = memory_get_usage() - $mem_start;
                // Max one megabyte
                if ($mem_total < 1048576) {
                    $this->link_data[$field] = $result;
                }
                return $result;
            }
        } else {
            return $this->link_data[$field];
        }

        return null;
    }