@Override
    public synchronized void complete() {
        super.complete();

        switch (getState()) {
            case Rejected:
                if (this.completion != null) {
                    this.completion.failure(this.urlRequest, new Throwable("URLRequestOperation rejected from operation queue"));
                }
                break;
            case Cancelled:
                if (this.completion != null) {
                    this.completion.failure(this.urlRequest, new Throwable("URLRequestOperation cancelled in operation queue"));
                }
                break;
            default:
                if (this.completion != null) {
                    this.completion.success(this.urlRequest, this.accumulationBuffer.toByteArray());
                }
                break;
        }

        try {
            this.accumulationBuffer.close();
            this.accumulationBuffer = null;
        } catch (IOException e) {}

    }