All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.cinchapi.concourse.thrift.ConcourseNavigateService Maven / Gradle / Ivy

Go to download

Concourse is a self-tuning database that is designed for both ad hoc analytics and high volume transactions at scale. Developers use Concourse to quickly build mission critical software while also benefiting from real time insight into their most important data. With Concourse, end-to-end data management requires no extra infrastructure, no prior configuration and no additional coding–all of which greatly reduce costs and allow developers to focus on core business problems.

There is a newer version: 0.11.2
Show newest version
/*
 * Copyright (c) 2013-2019 Cinchapi Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.cinchapi.concourse.thrift;

@SuppressWarnings({ "cast", "rawtypes", "serial", "unchecked", "unused" })
@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.12.0)", date = "2019-07-07")
public class ConcourseNavigateService {

    public interface Iface {

        public java.util.Map> navigateKeyRecord(
                java.lang.String key, long record,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map> navigateKeyRecordTime(
                java.lang.String key, long record, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map> navigateKeyRecordTimestr(
                java.lang.String key, long record, java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map>> navigateKeysRecord(
                java.util.List keys, long record,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map>> navigateKeysRecordTime(
                java.util.List keys, long record,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map>> navigateKeysRecordTimestr(
                java.util.List keys, long record,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map>> navigateKeysRecords(
                java.util.List keys,
                java.util.List records,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map> navigateKeyRecords(
                java.lang.String key, java.util.List records,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map> navigateKeyRecordsTime(
                java.lang.String key, java.util.List records,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map> navigateKeyRecordsTimestr(
                java.lang.String key, java.util.List records,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map>> navigateKeysRecordsTime(
                java.util.List keys,
                java.util.List records, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map>> navigateKeysRecordsTimestr(
                java.util.List keys,
                java.util.List records,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map> navigateKeyCcl(
                java.lang.String key, java.lang.String ccl,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map> navigateKeyCclTime(
                java.lang.String key, java.lang.String ccl, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map> navigateKeyCclTimestr(
                java.lang.String key, java.lang.String ccl,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map>> navigateKeysCcl(
                java.util.List keys, java.lang.String ccl,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map>> navigateKeysCclTime(
                java.util.List keys, java.lang.String ccl,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map>> navigateKeysCclTimestr(
                java.util.List keys, java.lang.String ccl,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map> navigateKeyCriteria(
                java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map> navigateKeyCriteriaTime(
                java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map> navigateKeyCriteriaTimestr(
                java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map>> navigateKeysCriteria(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map>> navigateKeysCriteriaTime(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

        public java.util.Map>> navigateKeysCriteriaTimestr(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException;

    }

    public interface AsyncIface {

        public void navigateKeyRecord(java.lang.String key, long record,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeyRecordTime(java.lang.String key, long record,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeyRecordTimestr(java.lang.String key, long record,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeysRecord(java.util.List keys,
                long record, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeysRecordTime(
                java.util.List keys, long record,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeysRecordTimestr(
                java.util.List keys, long record,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeysRecords(java.util.List keys,
                java.util.List records,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeyRecords(java.lang.String key,
                java.util.List records,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeyRecordsTime(java.lang.String key,
                java.util.List records, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeyRecordsTimestr(java.lang.String key,
                java.util.List records,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeysRecordsTime(
                java.util.List keys,
                java.util.List records, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeysRecordsTimestr(
                java.util.List keys,
                java.util.List records,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeyCcl(java.lang.String key, java.lang.String ccl,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeyCclTime(java.lang.String key,
                java.lang.String ccl, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeyCclTimestr(java.lang.String key,
                java.lang.String ccl, java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeysCcl(java.util.List keys,
                java.lang.String ccl,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeysCclTime(java.util.List keys,
                java.lang.String ccl, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeysCclTimestr(
                java.util.List keys, java.lang.String ccl,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeyCriteria(java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeyCriteriaTime(java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeyCriteriaTimestr(java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeysCriteria(java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeysCriteriaTime(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException;

        public void navigateKeysCriteriaTimestr(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException;

    }

    public static class Client extends org.apache.thrift.TServiceClient
            implements Iface {
        public static class Factory
                implements org.apache.thrift.TServiceClientFactory {
            public Factory() {}

            public Client getClient(org.apache.thrift.protocol.TProtocol prot) {
                return new Client(prot);
            }

            public Client getClient(org.apache.thrift.protocol.TProtocol iprot,
                    org.apache.thrift.protocol.TProtocol oprot) {
                return new Client(iprot, oprot);
            }
        }

        public Client(org.apache.thrift.protocol.TProtocol prot) {
            super(prot, prot);
        }

        public Client(org.apache.thrift.protocol.TProtocol iprot,
                org.apache.thrift.protocol.TProtocol oprot) {
            super(iprot, oprot);
        }

        public java.util.Map> navigateKeyRecord(
                java.lang.String key, long record,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeyRecord(key, record, creds, transaction,
                    environment);
            return recv_navigateKeyRecord();
        }

        public void send_navigateKeyRecord(java.lang.String key, long record,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeyRecord_args args = new navigateKeyRecord_args();
            args.setKey(key);
            args.setRecord(record);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeyRecord", args);
        }

        public java.util.Map> recv_navigateKeyRecord()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeyRecord_result result = new navigateKeyRecord_result();
            receiveBase(result, "navigateKeyRecord");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeyRecord failed: unknown result");
        }

        public java.util.Map> navigateKeyRecordTime(
                java.lang.String key, long record, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeyRecordTime(key, record, timestamp, creds,
                    transaction, environment);
            return recv_navigateKeyRecordTime();
        }

        public void send_navigateKeyRecordTime(java.lang.String key,
                long record, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeyRecordTime_args args = new navigateKeyRecordTime_args();
            args.setKey(key);
            args.setRecord(record);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeyRecordTime", args);
        }

        public java.util.Map> recv_navigateKeyRecordTime()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeyRecordTime_result result = new navigateKeyRecordTime_result();
            receiveBase(result, "navigateKeyRecordTime");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeyRecordTime failed: unknown result");
        }

        public java.util.Map> navigateKeyRecordTimestr(
                java.lang.String key, long record, java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeyRecordTimestr(key, record, timestamp, creds,
                    transaction, environment);
            return recv_navigateKeyRecordTimestr();
        }

        public void send_navigateKeyRecordTimestr(java.lang.String key,
                long record, java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeyRecordTimestr_args args = new navigateKeyRecordTimestr_args();
            args.setKey(key);
            args.setRecord(record);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeyRecordTimestr", args);
        }

        public java.util.Map> recv_navigateKeyRecordTimestr()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeyRecordTimestr_result result = new navigateKeyRecordTimestr_result();
            receiveBase(result, "navigateKeyRecordTimestr");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeyRecordTimestr failed: unknown result");
        }

        public java.util.Map>> navigateKeysRecord(
                java.util.List keys, long record,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeysRecord(keys, record, creds, transaction,
                    environment);
            return recv_navigateKeysRecord();
        }

        public void send_navigateKeysRecord(
                java.util.List keys, long record,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeysRecord_args args = new navigateKeysRecord_args();
            args.setKeys(keys);
            args.setRecord(record);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeysRecord", args);
        }

        public java.util.Map>> recv_navigateKeysRecord()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeysRecord_result result = new navigateKeysRecord_result();
            receiveBase(result, "navigateKeysRecord");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeysRecord failed: unknown result");
        }

        public java.util.Map>> navigateKeysRecordTime(
                java.util.List keys, long record,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeysRecordTime(keys, record, timestamp, creds,
                    transaction, environment);
            return recv_navigateKeysRecordTime();
        }

        public void send_navigateKeysRecordTime(
                java.util.List keys, long record,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeysRecordTime_args args = new navigateKeysRecordTime_args();
            args.setKeys(keys);
            args.setRecord(record);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeysRecordTime", args);
        }

        public java.util.Map>> recv_navigateKeysRecordTime()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeysRecordTime_result result = new navigateKeysRecordTime_result();
            receiveBase(result, "navigateKeysRecordTime");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeysRecordTime failed: unknown result");
        }

        public java.util.Map>> navigateKeysRecordTimestr(
                java.util.List keys, long record,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeysRecordTimestr(keys, record, timestamp, creds,
                    transaction, environment);
            return recv_navigateKeysRecordTimestr();
        }

        public void send_navigateKeysRecordTimestr(
                java.util.List keys, long record,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeysRecordTimestr_args args = new navigateKeysRecordTimestr_args();
            args.setKeys(keys);
            args.setRecord(record);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeysRecordTimestr", args);
        }

        public java.util.Map>> recv_navigateKeysRecordTimestr()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeysRecordTimestr_result result = new navigateKeysRecordTimestr_result();
            receiveBase(result, "navigateKeysRecordTimestr");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeysRecordTimestr failed: unknown result");
        }

        public java.util.Map>> navigateKeysRecords(
                java.util.List keys,
                java.util.List records,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeysRecords(keys, records, creds, transaction,
                    environment);
            return recv_navigateKeysRecords();
        }

        public void send_navigateKeysRecords(
                java.util.List keys,
                java.util.List records,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeysRecords_args args = new navigateKeysRecords_args();
            args.setKeys(keys);
            args.setRecords(records);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeysRecords", args);
        }

        public java.util.Map>> recv_navigateKeysRecords()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeysRecords_result result = new navigateKeysRecords_result();
            receiveBase(result, "navigateKeysRecords");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeysRecords failed: unknown result");
        }

        public java.util.Map> navigateKeyRecords(
                java.lang.String key, java.util.List records,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeyRecords(key, records, creds, transaction,
                    environment);
            return recv_navigateKeyRecords();
        }

        public void send_navigateKeyRecords(java.lang.String key,
                java.util.List records,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeyRecords_args args = new navigateKeyRecords_args();
            args.setKey(key);
            args.setRecords(records);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeyRecords", args);
        }

        public java.util.Map> recv_navigateKeyRecords()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeyRecords_result result = new navigateKeyRecords_result();
            receiveBase(result, "navigateKeyRecords");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeyRecords failed: unknown result");
        }

        public java.util.Map> navigateKeyRecordsTime(
                java.lang.String key, java.util.List records,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeyRecordsTime(key, records, timestamp, creds,
                    transaction, environment);
            return recv_navigateKeyRecordsTime();
        }

        public void send_navigateKeyRecordsTime(java.lang.String key,
                java.util.List records, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeyRecordsTime_args args = new navigateKeyRecordsTime_args();
            args.setKey(key);
            args.setRecords(records);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeyRecordsTime", args);
        }

        public java.util.Map> recv_navigateKeyRecordsTime()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeyRecordsTime_result result = new navigateKeyRecordsTime_result();
            receiveBase(result, "navigateKeyRecordsTime");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeyRecordsTime failed: unknown result");
        }

        public java.util.Map> navigateKeyRecordsTimestr(
                java.lang.String key, java.util.List records,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeyRecordsTimestr(key, records, timestamp, creds,
                    transaction, environment);
            return recv_navigateKeyRecordsTimestr();
        }

        public void send_navigateKeyRecordsTimestr(java.lang.String key,
                java.util.List records,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeyRecordsTimestr_args args = new navigateKeyRecordsTimestr_args();
            args.setKey(key);
            args.setRecords(records);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeyRecordsTimestr", args);
        }

        public java.util.Map> recv_navigateKeyRecordsTimestr()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeyRecordsTimestr_result result = new navigateKeyRecordsTimestr_result();
            receiveBase(result, "navigateKeyRecordsTimestr");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeyRecordsTimestr failed: unknown result");
        }

        public java.util.Map>> navigateKeysRecordsTime(
                java.util.List keys,
                java.util.List records, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeysRecordsTime(keys, records, timestamp, creds,
                    transaction, environment);
            return recv_navigateKeysRecordsTime();
        }

        public void send_navigateKeysRecordsTime(
                java.util.List keys,
                java.util.List records, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeysRecordsTime_args args = new navigateKeysRecordsTime_args();
            args.setKeys(keys);
            args.setRecords(records);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeysRecordsTime", args);
        }

        public java.util.Map>> recv_navigateKeysRecordsTime()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeysRecordsTime_result result = new navigateKeysRecordsTime_result();
            receiveBase(result, "navigateKeysRecordsTime");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeysRecordsTime failed: unknown result");
        }

        public java.util.Map>> navigateKeysRecordsTimestr(
                java.util.List keys,
                java.util.List records,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeysRecordsTimestr(keys, records, timestamp, creds,
                    transaction, environment);
            return recv_navigateKeysRecordsTimestr();
        }

        public void send_navigateKeysRecordsTimestr(
                java.util.List keys,
                java.util.List records,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeysRecordsTimestr_args args = new navigateKeysRecordsTimestr_args();
            args.setKeys(keys);
            args.setRecords(records);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeysRecordsTimestr", args);
        }

        public java.util.Map>> recv_navigateKeysRecordsTimestr()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeysRecordsTimestr_result result = new navigateKeysRecordsTimestr_result();
            receiveBase(result, "navigateKeysRecordsTimestr");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeysRecordsTimestr failed: unknown result");
        }

        public java.util.Map> navigateKeyCcl(
                java.lang.String key, java.lang.String ccl,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeyCcl(key, ccl, creds, transaction, environment);
            return recv_navigateKeyCcl();
        }

        public void send_navigateKeyCcl(java.lang.String key,
                java.lang.String ccl,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeyCcl_args args = new navigateKeyCcl_args();
            args.setKey(key);
            args.setCcl(ccl);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeyCcl", args);
        }

        public java.util.Map> recv_navigateKeyCcl()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeyCcl_result result = new navigateKeyCcl_result();
            receiveBase(result, "navigateKeyCcl");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeyCcl failed: unknown result");
        }

        public java.util.Map> navigateKeyCclTime(
                java.lang.String key, java.lang.String ccl, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeyCclTime(key, ccl, timestamp, creds, transaction,
                    environment);
            return recv_navigateKeyCclTime();
        }

        public void send_navigateKeyCclTime(java.lang.String key,
                java.lang.String ccl, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeyCclTime_args args = new navigateKeyCclTime_args();
            args.setKey(key);
            args.setCcl(ccl);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeyCclTime", args);
        }

        public java.util.Map> recv_navigateKeyCclTime()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeyCclTime_result result = new navigateKeyCclTime_result();
            receiveBase(result, "navigateKeyCclTime");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeyCclTime failed: unknown result");
        }

        public java.util.Map> navigateKeyCclTimestr(
                java.lang.String key, java.lang.String ccl,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeyCclTimestr(key, ccl, timestamp, creds, transaction,
                    environment);
            return recv_navigateKeyCclTimestr();
        }

        public void send_navigateKeyCclTimestr(java.lang.String key,
                java.lang.String ccl, java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeyCclTimestr_args args = new navigateKeyCclTimestr_args();
            args.setKey(key);
            args.setCcl(ccl);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeyCclTimestr", args);
        }

        public java.util.Map> recv_navigateKeyCclTimestr()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeyCclTimestr_result result = new navigateKeyCclTimestr_result();
            receiveBase(result, "navigateKeyCclTimestr");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeyCclTimestr failed: unknown result");
        }

        public java.util.Map>> navigateKeysCcl(
                java.util.List keys, java.lang.String ccl,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeysCcl(keys, ccl, creds, transaction, environment);
            return recv_navigateKeysCcl();
        }

        public void send_navigateKeysCcl(java.util.List keys,
                java.lang.String ccl,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeysCcl_args args = new navigateKeysCcl_args();
            args.setKeys(keys);
            args.setCcl(ccl);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeysCcl", args);
        }

        public java.util.Map>> recv_navigateKeysCcl()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeysCcl_result result = new navigateKeysCcl_result();
            receiveBase(result, "navigateKeysCcl");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeysCcl failed: unknown result");
        }

        public java.util.Map>> navigateKeysCclTime(
                java.util.List keys, java.lang.String ccl,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeysCclTime(keys, ccl, timestamp, creds, transaction,
                    environment);
            return recv_navigateKeysCclTime();
        }

        public void send_navigateKeysCclTime(
                java.util.List keys, java.lang.String ccl,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeysCclTime_args args = new navigateKeysCclTime_args();
            args.setKeys(keys);
            args.setCcl(ccl);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeysCclTime", args);
        }

        public java.util.Map>> recv_navigateKeysCclTime()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeysCclTime_result result = new navigateKeysCclTime_result();
            receiveBase(result, "navigateKeysCclTime");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeysCclTime failed: unknown result");
        }

        public java.util.Map>> navigateKeysCclTimestr(
                java.util.List keys, java.lang.String ccl,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeysCclTimestr(keys, ccl, timestamp, creds,
                    transaction, environment);
            return recv_navigateKeysCclTimestr();
        }

        public void send_navigateKeysCclTimestr(
                java.util.List keys, java.lang.String ccl,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeysCclTimestr_args args = new navigateKeysCclTimestr_args();
            args.setKeys(keys);
            args.setCcl(ccl);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeysCclTimestr", args);
        }

        public java.util.Map>> recv_navigateKeysCclTimestr()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeysCclTimestr_result result = new navigateKeysCclTimestr_result();
            receiveBase(result, "navigateKeysCclTimestr");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeysCclTimestr failed: unknown result");
        }

        public java.util.Map> navigateKeyCriteria(
                java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeyCriteria(key, criteria, creds, transaction,
                    environment);
            return recv_navigateKeyCriteria();
        }

        public void send_navigateKeyCriteria(java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeyCriteria_args args = new navigateKeyCriteria_args();
            args.setKey(key);
            args.setCriteria(criteria);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeyCriteria", args);
        }

        public java.util.Map> recv_navigateKeyCriteria()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeyCriteria_result result = new navigateKeyCriteria_result();
            receiveBase(result, "navigateKeyCriteria");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeyCriteria failed: unknown result");
        }

        public java.util.Map> navigateKeyCriteriaTime(
                java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeyCriteriaTime(key, criteria, timestamp, creds,
                    transaction, environment);
            return recv_navigateKeyCriteriaTime();
        }

        public void send_navigateKeyCriteriaTime(java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeyCriteriaTime_args args = new navigateKeyCriteriaTime_args();
            args.setKey(key);
            args.setCriteria(criteria);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeyCriteriaTime", args);
        }

        public java.util.Map> recv_navigateKeyCriteriaTime()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeyCriteriaTime_result result = new navigateKeyCriteriaTime_result();
            receiveBase(result, "navigateKeyCriteriaTime");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeyCriteriaTime failed: unknown result");
        }

        public java.util.Map> navigateKeyCriteriaTimestr(
                java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeyCriteriaTimestr(key, criteria, timestamp, creds,
                    transaction, environment);
            return recv_navigateKeyCriteriaTimestr();
        }

        public void send_navigateKeyCriteriaTimestr(java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeyCriteriaTimestr_args args = new navigateKeyCriteriaTimestr_args();
            args.setKey(key);
            args.setCriteria(criteria);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeyCriteriaTimestr", args);
        }

        public java.util.Map> recv_navigateKeyCriteriaTimestr()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeyCriteriaTimestr_result result = new navigateKeyCriteriaTimestr_result();
            receiveBase(result, "navigateKeyCriteriaTimestr");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeyCriteriaTimestr failed: unknown result");
        }

        public java.util.Map>> navigateKeysCriteria(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeysCriteria(keys, criteria, creds, transaction,
                    environment);
            return recv_navigateKeysCriteria();
        }

        public void send_navigateKeysCriteria(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeysCriteria_args args = new navigateKeysCriteria_args();
            args.setKeys(keys);
            args.setCriteria(criteria);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeysCriteria", args);
        }

        public java.util.Map>> recv_navigateKeysCriteria()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeysCriteria_result result = new navigateKeysCriteria_result();
            receiveBase(result, "navigateKeysCriteria");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeysCriteria failed: unknown result");
        }

        public java.util.Map>> navigateKeysCriteriaTime(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeysCriteriaTime(keys, criteria, timestamp, creds,
                    transaction, environment);
            return recv_navigateKeysCriteriaTime();
        }

        public void send_navigateKeysCriteriaTime(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeysCriteriaTime_args args = new navigateKeysCriteriaTime_args();
            args.setKeys(keys);
            args.setCriteria(criteria);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeysCriteriaTime", args);
        }

        public java.util.Map>> recv_navigateKeysCriteriaTime()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeysCriteriaTime_result result = new navigateKeysCriteriaTime_result();
            receiveBase(result, "navigateKeysCriteriaTime");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeysCriteriaTime failed: unknown result");
        }

        public java.util.Map>> navigateKeysCriteriaTimestr(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            send_navigateKeysCriteriaTimestr(keys, criteria, timestamp, creds,
                    transaction, environment);
            return recv_navigateKeysCriteriaTimestr();
        }

        public void send_navigateKeysCriteriaTimestr(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment)
                throws org.apache.thrift.TException {
            navigateKeysCriteriaTimestr_args args = new navigateKeysCriteriaTimestr_args();
            args.setKeys(keys);
            args.setCriteria(criteria);
            args.setTimestamp(timestamp);
            args.setCreds(creds);
            args.setTransaction(transaction);
            args.setEnvironment(environment);
            sendBase("navigateKeysCriteriaTimestr", args);
        }

        public java.util.Map>> recv_navigateKeysCriteriaTimestr()
                throws com.cinchapi.concourse.thrift.SecurityException,
                com.cinchapi.concourse.thrift.TransactionException,
                com.cinchapi.concourse.thrift.ParseException,
                com.cinchapi.concourse.thrift.PermissionException,
                org.apache.thrift.TException {
            navigateKeysCriteriaTimestr_result result = new navigateKeysCriteriaTimestr_result();
            receiveBase(result, "navigateKeysCriteriaTimestr");
            if(result.isSetSuccess()) {
                return result.success;
            }
            if(result.ex != null) {
                throw result.ex;
            }
            if(result.ex2 != null) {
                throw result.ex2;
            }
            if(result.ex3 != null) {
                throw result.ex3;
            }
            if(result.ex4 != null) {
                throw result.ex4;
            }
            throw new org.apache.thrift.TApplicationException(
                    org.apache.thrift.TApplicationException.MISSING_RESULT,
                    "navigateKeysCriteriaTimestr failed: unknown result");
        }

    }

    public static class AsyncClient extends org.apache.thrift.async.TAsyncClient
            implements AsyncIface {
        public static class Factory implements
                org.apache.thrift.async.TAsyncClientFactory {
            private org.apache.thrift.async.TAsyncClientManager clientManager;
            private org.apache.thrift.protocol.TProtocolFactory protocolFactory;

            public Factory(
                    org.apache.thrift.async.TAsyncClientManager clientManager,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory) {
                this.clientManager = clientManager;
                this.protocolFactory = protocolFactory;
            }

            public AsyncClient getAsyncClient(
                    org.apache.thrift.transport.TNonblockingTransport transport) {
                return new AsyncClient(protocolFactory, clientManager,
                        transport);
            }
        }

        public AsyncClient(
                org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                org.apache.thrift.async.TAsyncClientManager clientManager,
                org.apache.thrift.transport.TNonblockingTransport transport) {
            super(protocolFactory, clientManager, transport);
        }

        public void navigateKeyRecord(java.lang.String key, long record,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeyRecord_call method_call = new navigateKeyRecord_call(key,
                    record, creds, transaction, environment, resultHandler,
                    this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeyRecord_call extends
                org.apache.thrift.async.TAsyncMethodCall>> {
            private java.lang.String key;
            private long record;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeyRecord_call(java.lang.String key, long record,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.key = key;
                this.record = record;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeyRecord",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeyRecord_args args = new navigateKeyRecord_args();
                args.setKey(key);
                args.setRecord(record);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeyRecord();
            }
        }

        public void navigateKeyRecordTime(java.lang.String key, long record,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeyRecordTime_call method_call = new navigateKeyRecordTime_call(
                    key, record, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeyRecordTime_call extends
                org.apache.thrift.async.TAsyncMethodCall>> {
            private java.lang.String key;
            private long record;
            private long timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeyRecordTime_call(java.lang.String key, long record,
                    long timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.key = key;
                this.record = record;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeyRecordTime",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeyRecordTime_args args = new navigateKeyRecordTime_args();
                args.setKey(key);
                args.setRecord(record);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeyRecordTime();
            }
        }

        public void navigateKeyRecordTimestr(java.lang.String key, long record,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeyRecordTimestr_call method_call = new navigateKeyRecordTimestr_call(
                    key, record, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeyRecordTimestr_call extends
                org.apache.thrift.async.TAsyncMethodCall>> {
            private java.lang.String key;
            private long record;
            private java.lang.String timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeyRecordTimestr_call(java.lang.String key,
                    long record, java.lang.String timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.key = key;
                this.record = record;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeyRecordTimestr",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeyRecordTimestr_args args = new navigateKeyRecordTimestr_args();
                args.setKey(key);
                args.setRecord(record);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeyRecordTimestr();
            }
        }

        public void navigateKeysRecord(java.util.List keys,
                long record, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeysRecord_call method_call = new navigateKeysRecord_call(
                    keys, record, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeysRecord_call extends
                org.apache.thrift.async.TAsyncMethodCall>>> {
            private java.util.List keys;
            private long record;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeysRecord_call(
                    java.util.List keys, long record,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.keys = keys;
                this.record = record;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeysRecord",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeysRecord_args args = new navigateKeysRecord_args();
                args.setKeys(keys);
                args.setRecord(record);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map>> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeysRecord();
            }
        }

        public void navigateKeysRecordTime(
                java.util.List keys, long record,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeysRecordTime_call method_call = new navigateKeysRecordTime_call(
                    keys, record, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeysRecordTime_call extends
                org.apache.thrift.async.TAsyncMethodCall>>> {
            private java.util.List keys;
            private long record;
            private long timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeysRecordTime_call(
                    java.util.List keys, long record,
                    long timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.keys = keys;
                this.record = record;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeysRecordTime",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeysRecordTime_args args = new navigateKeysRecordTime_args();
                args.setKeys(keys);
                args.setRecord(record);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map>> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeysRecordTime();
            }
        }

        public void navigateKeysRecordTimestr(
                java.util.List keys, long record,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeysRecordTimestr_call method_call = new navigateKeysRecordTimestr_call(
                    keys, record, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeysRecordTimestr_call extends
                org.apache.thrift.async.TAsyncMethodCall>>> {
            private java.util.List keys;
            private long record;
            private java.lang.String timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeysRecordTimestr_call(
                    java.util.List keys, long record,
                    java.lang.String timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.keys = keys;
                this.record = record;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeysRecordTimestr",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeysRecordTimestr_args args = new navigateKeysRecordTimestr_args();
                args.setKeys(keys);
                args.setRecord(record);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map>> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeysRecordTimestr();
            }
        }

        public void navigateKeysRecords(java.util.List keys,
                java.util.List records,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeysRecords_call method_call = new navigateKeysRecords_call(
                    keys, records, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeysRecords_call extends
                org.apache.thrift.async.TAsyncMethodCall>>> {
            private java.util.List keys;
            private java.util.List records;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeysRecords_call(
                    java.util.List keys,
                    java.util.List records,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.keys = keys;
                this.records = records;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeysRecords",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeysRecords_args args = new navigateKeysRecords_args();
                args.setKeys(keys);
                args.setRecords(records);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map>> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeysRecords();
            }
        }

        public void navigateKeyRecords(java.lang.String key,
                java.util.List records,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeyRecords_call method_call = new navigateKeyRecords_call(
                    key, records, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeyRecords_call extends
                org.apache.thrift.async.TAsyncMethodCall>> {
            private java.lang.String key;
            private java.util.List records;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeyRecords_call(java.lang.String key,
                    java.util.List records,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.key = key;
                this.records = records;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeyRecords",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeyRecords_args args = new navigateKeyRecords_args();
                args.setKey(key);
                args.setRecords(records);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeyRecords();
            }
        }

        public void navigateKeyRecordsTime(java.lang.String key,
                java.util.List records, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeyRecordsTime_call method_call = new navigateKeyRecordsTime_call(
                    key, records, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeyRecordsTime_call extends
                org.apache.thrift.async.TAsyncMethodCall>> {
            private java.lang.String key;
            private java.util.List records;
            private long timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeyRecordsTime_call(java.lang.String key,
                    java.util.List records, long timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.key = key;
                this.records = records;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeyRecordsTime",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeyRecordsTime_args args = new navigateKeyRecordsTime_args();
                args.setKey(key);
                args.setRecords(records);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeyRecordsTime();
            }
        }

        public void navigateKeyRecordsTimestr(java.lang.String key,
                java.util.List records,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeyRecordsTimestr_call method_call = new navigateKeyRecordsTimestr_call(
                    key, records, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeyRecordsTimestr_call extends
                org.apache.thrift.async.TAsyncMethodCall>> {
            private java.lang.String key;
            private java.util.List records;
            private java.lang.String timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeyRecordsTimestr_call(java.lang.String key,
                    java.util.List records,
                    java.lang.String timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.key = key;
                this.records = records;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeyRecordsTimestr",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeyRecordsTimestr_args args = new navigateKeyRecordsTimestr_args();
                args.setKey(key);
                args.setRecords(records);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeyRecordsTimestr();
            }
        }

        public void navigateKeysRecordsTime(
                java.util.List keys,
                java.util.List records, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeysRecordsTime_call method_call = new navigateKeysRecordsTime_call(
                    keys, records, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeysRecordsTime_call extends
                org.apache.thrift.async.TAsyncMethodCall>>> {
            private java.util.List keys;
            private java.util.List records;
            private long timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeysRecordsTime_call(
                    java.util.List keys,
                    java.util.List records, long timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.keys = keys;
                this.records = records;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeysRecordsTime",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeysRecordsTime_args args = new navigateKeysRecordsTime_args();
                args.setKeys(keys);
                args.setRecords(records);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map>> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeysRecordsTime();
            }
        }

        public void navigateKeysRecordsTimestr(
                java.util.List keys,
                java.util.List records,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeysRecordsTimestr_call method_call = new navigateKeysRecordsTimestr_call(
                    keys, records, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeysRecordsTimestr_call extends
                org.apache.thrift.async.TAsyncMethodCall>>> {
            private java.util.List keys;
            private java.util.List records;
            private java.lang.String timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeysRecordsTimestr_call(
                    java.util.List keys,
                    java.util.List records,
                    java.lang.String timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.keys = keys;
                this.records = records;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeysRecordsTimestr",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeysRecordsTimestr_args args = new navigateKeysRecordsTimestr_args();
                args.setKeys(keys);
                args.setRecords(records);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map>> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeysRecordsTimestr();
            }
        }

        public void navigateKeyCcl(java.lang.String key, java.lang.String ccl,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeyCcl_call method_call = new navigateKeyCcl_call(key, ccl,
                    creds, transaction, environment, resultHandler, this,
                    ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeyCcl_call extends
                org.apache.thrift.async.TAsyncMethodCall>> {
            private java.lang.String key;
            private java.lang.String ccl;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeyCcl_call(java.lang.String key,
                    java.lang.String ccl,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.key = key;
                this.ccl = ccl;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeyCcl",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeyCcl_args args = new navigateKeyCcl_args();
                args.setKey(key);
                args.setCcl(ccl);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeyCcl();
            }
        }

        public void navigateKeyCclTime(java.lang.String key,
                java.lang.String ccl, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeyCclTime_call method_call = new navigateKeyCclTime_call(
                    key, ccl, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeyCclTime_call extends
                org.apache.thrift.async.TAsyncMethodCall>> {
            private java.lang.String key;
            private java.lang.String ccl;
            private long timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeyCclTime_call(java.lang.String key,
                    java.lang.String ccl, long timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.key = key;
                this.ccl = ccl;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeyCclTime",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeyCclTime_args args = new navigateKeyCclTime_args();
                args.setKey(key);
                args.setCcl(ccl);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeyCclTime();
            }
        }

        public void navigateKeyCclTimestr(java.lang.String key,
                java.lang.String ccl, java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeyCclTimestr_call method_call = new navigateKeyCclTimestr_call(
                    key, ccl, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeyCclTimestr_call extends
                org.apache.thrift.async.TAsyncMethodCall>> {
            private java.lang.String key;
            private java.lang.String ccl;
            private java.lang.String timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeyCclTimestr_call(java.lang.String key,
                    java.lang.String ccl, java.lang.String timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.key = key;
                this.ccl = ccl;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeyCclTimestr",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeyCclTimestr_args args = new navigateKeyCclTimestr_args();
                args.setKey(key);
                args.setCcl(ccl);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeyCclTimestr();
            }
        }

        public void navigateKeysCcl(java.util.List keys,
                java.lang.String ccl,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeysCcl_call method_call = new navigateKeysCcl_call(keys,
                    ccl, creds, transaction, environment, resultHandler, this,
                    ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeysCcl_call extends
                org.apache.thrift.async.TAsyncMethodCall>>> {
            private java.util.List keys;
            private java.lang.String ccl;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeysCcl_call(java.util.List keys,
                    java.lang.String ccl,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.keys = keys;
                this.ccl = ccl;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeysCcl",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeysCcl_args args = new navigateKeysCcl_args();
                args.setKeys(keys);
                args.setCcl(ccl);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map>> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeysCcl();
            }
        }

        public void navigateKeysCclTime(java.util.List keys,
                java.lang.String ccl, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeysCclTime_call method_call = new navigateKeysCclTime_call(
                    keys, ccl, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeysCclTime_call extends
                org.apache.thrift.async.TAsyncMethodCall>>> {
            private java.util.List keys;
            private java.lang.String ccl;
            private long timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeysCclTime_call(
                    java.util.List keys, java.lang.String ccl,
                    long timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.keys = keys;
                this.ccl = ccl;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeysCclTime",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeysCclTime_args args = new navigateKeysCclTime_args();
                args.setKeys(keys);
                args.setCcl(ccl);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map>> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeysCclTime();
            }
        }

        public void navigateKeysCclTimestr(
                java.util.List keys, java.lang.String ccl,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeysCclTimestr_call method_call = new navigateKeysCclTimestr_call(
                    keys, ccl, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeysCclTimestr_call extends
                org.apache.thrift.async.TAsyncMethodCall>>> {
            private java.util.List keys;
            private java.lang.String ccl;
            private java.lang.String timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeysCclTimestr_call(
                    java.util.List keys, java.lang.String ccl,
                    java.lang.String timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.keys = keys;
                this.ccl = ccl;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeysCclTimestr",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeysCclTimestr_args args = new navigateKeysCclTimestr_args();
                args.setKeys(keys);
                args.setCcl(ccl);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map>> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeysCclTimestr();
            }
        }

        public void navigateKeyCriteria(java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeyCriteria_call method_call = new navigateKeyCriteria_call(
                    key, criteria, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeyCriteria_call extends
                org.apache.thrift.async.TAsyncMethodCall>> {
            private java.lang.String key;
            private com.cinchapi.concourse.thrift.TCriteria criteria;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeyCriteria_call(java.lang.String key,
                    com.cinchapi.concourse.thrift.TCriteria criteria,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.key = key;
                this.criteria = criteria;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeyCriteria",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeyCriteria_args args = new navigateKeyCriteria_args();
                args.setKey(key);
                args.setCriteria(criteria);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeyCriteria();
            }
        }

        public void navigateKeyCriteriaTime(java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeyCriteriaTime_call method_call = new navigateKeyCriteriaTime_call(
                    key, criteria, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeyCriteriaTime_call extends
                org.apache.thrift.async.TAsyncMethodCall>> {
            private java.lang.String key;
            private com.cinchapi.concourse.thrift.TCriteria criteria;
            private long timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeyCriteriaTime_call(java.lang.String key,
                    com.cinchapi.concourse.thrift.TCriteria criteria,
                    long timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.key = key;
                this.criteria = criteria;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeyCriteriaTime",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeyCriteriaTime_args args = new navigateKeyCriteriaTime_args();
                args.setKey(key);
                args.setCriteria(criteria);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeyCriteriaTime();
            }
        }

        public void navigateKeyCriteriaTimestr(java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeyCriteriaTimestr_call method_call = new navigateKeyCriteriaTimestr_call(
                    key, criteria, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeyCriteriaTimestr_call extends
                org.apache.thrift.async.TAsyncMethodCall>> {
            private java.lang.String key;
            private com.cinchapi.concourse.thrift.TCriteria criteria;
            private java.lang.String timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeyCriteriaTimestr_call(java.lang.String key,
                    com.cinchapi.concourse.thrift.TCriteria criteria,
                    java.lang.String timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.key = key;
                this.criteria = criteria;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeyCriteriaTimestr",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeyCriteriaTimestr_args args = new navigateKeyCriteriaTimestr_args();
                args.setKey(key);
                args.setCriteria(criteria);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeyCriteriaTimestr();
            }
        }

        public void navigateKeysCriteria(java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeysCriteria_call method_call = new navigateKeysCriteria_call(
                    keys, criteria, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeysCriteria_call extends
                org.apache.thrift.async.TAsyncMethodCall>>> {
            private java.util.List keys;
            private com.cinchapi.concourse.thrift.TCriteria criteria;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeysCriteria_call(
                    java.util.List keys,
                    com.cinchapi.concourse.thrift.TCriteria criteria,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.keys = keys;
                this.criteria = criteria;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeysCriteria",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeysCriteria_args args = new navigateKeysCriteria_args();
                args.setKeys(keys);
                args.setCriteria(criteria);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map>> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeysCriteria();
            }
        }

        public void navigateKeysCriteriaTime(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeysCriteriaTime_call method_call = new navigateKeysCriteriaTime_call(
                    keys, criteria, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeysCriteriaTime_call extends
                org.apache.thrift.async.TAsyncMethodCall>>> {
            private java.util.List keys;
            private com.cinchapi.concourse.thrift.TCriteria criteria;
            private long timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeysCriteriaTime_call(
                    java.util.List keys,
                    com.cinchapi.concourse.thrift.TCriteria criteria,
                    long timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.keys = keys;
                this.criteria = criteria;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeysCriteriaTime",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeysCriteriaTime_args args = new navigateKeysCriteriaTime_args();
                args.setKeys(keys);
                args.setCriteria(criteria);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map>> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeysCriteriaTime();
            }
        }

        public void navigateKeysCriteriaTimestr(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment,
                org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                throws org.apache.thrift.TException {
            checkReady();
            navigateKeysCriteriaTimestr_call method_call = new navigateKeysCriteriaTimestr_call(
                    keys, criteria, timestamp, creds, transaction, environment,
                    resultHandler, this, ___protocolFactory, ___transport);
            this.___currentMethod = method_call;
            ___manager.call(method_call);
        }

        public static class navigateKeysCriteriaTimestr_call extends
                org.apache.thrift.async.TAsyncMethodCall>>> {
            private java.util.List keys;
            private com.cinchapi.concourse.thrift.TCriteria criteria;
            private java.lang.String timestamp;
            private com.cinchapi.concourse.thrift.AccessToken creds;
            private com.cinchapi.concourse.thrift.TransactionToken transaction;
            private java.lang.String environment;

            public navigateKeysCriteriaTimestr_call(
                    java.util.List keys,
                    com.cinchapi.concourse.thrift.TCriteria criteria,
                    java.lang.String timestamp,
                    com.cinchapi.concourse.thrift.AccessToken creds,
                    com.cinchapi.concourse.thrift.TransactionToken transaction,
                    java.lang.String environment,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler,
                    org.apache.thrift.async.TAsyncClient client,
                    org.apache.thrift.protocol.TProtocolFactory protocolFactory,
                    org.apache.thrift.transport.TNonblockingTransport transport)
                    throws org.apache.thrift.TException {
                super(client, protocolFactory, transport, resultHandler, false);
                this.keys = keys;
                this.criteria = criteria;
                this.timestamp = timestamp;
                this.creds = creds;
                this.transaction = transaction;
                this.environment = environment;
            }

            public void write_args(org.apache.thrift.protocol.TProtocol prot)
                    throws org.apache.thrift.TException {
                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(
                        "navigateKeysCriteriaTimestr",
                        org.apache.thrift.protocol.TMessageType.CALL, 0));
                navigateKeysCriteriaTimestr_args args = new navigateKeysCriteriaTimestr_args();
                args.setKeys(keys);
                args.setCriteria(criteria);
                args.setTimestamp(timestamp);
                args.setCreds(creds);
                args.setTransaction(transaction);
                args.setEnvironment(environment);
                args.write(prot);
                prot.writeMessageEnd();
            }

            public java.util.Map>> getResult()
                    throws com.cinchapi.concourse.thrift.SecurityException,
                    com.cinchapi.concourse.thrift.TransactionException,
                    com.cinchapi.concourse.thrift.ParseException,
                    com.cinchapi.concourse.thrift.PermissionException,
                    org.apache.thrift.TException {
                if(getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
                    throw new java.lang.IllegalStateException(
                            "Method call not finished!");
                }
                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(
                        getFrameBuffer().array());
                org.apache.thrift.protocol.TProtocol prot = client
                        .getProtocolFactory().getProtocol(memoryTransport);
                return (new Client(prot)).recv_navigateKeysCriteriaTimestr();
            }
        }

    }

    public static class Processor
            extends org.apache.thrift.TBaseProcessor
            implements org.apache.thrift.TProcessor {
        private static final org.slf4j.Logger _LOGGER = org.slf4j.LoggerFactory
                .getLogger(Processor.class.getName());

        public Processor(I iface) {
            super(iface, getProcessMap(
                    new java.util.LinkedHashMap>()));
        }

        protected Processor(I iface,
                java.util.Map> processMap) {
            super(iface, getProcessMap(processMap));
        }

        private static  java.util.Map> getProcessMap(
                java.util.Map> processMap) {
            processMap.put("navigateKeyRecord", new navigateKeyRecord());
            processMap.put("navigateKeyRecordTime",
                    new navigateKeyRecordTime());
            processMap.put("navigateKeyRecordTimestr",
                    new navigateKeyRecordTimestr());
            processMap.put("navigateKeysRecord", new navigateKeysRecord());
            processMap.put("navigateKeysRecordTime",
                    new navigateKeysRecordTime());
            processMap.put("navigateKeysRecordTimestr",
                    new navigateKeysRecordTimestr());
            processMap.put("navigateKeysRecords", new navigateKeysRecords());
            processMap.put("navigateKeyRecords", new navigateKeyRecords());
            processMap.put("navigateKeyRecordsTime",
                    new navigateKeyRecordsTime());
            processMap.put("navigateKeyRecordsTimestr",
                    new navigateKeyRecordsTimestr());
            processMap.put("navigateKeysRecordsTime",
                    new navigateKeysRecordsTime());
            processMap.put("navigateKeysRecordsTimestr",
                    new navigateKeysRecordsTimestr());
            processMap.put("navigateKeyCcl", new navigateKeyCcl());
            processMap.put("navigateKeyCclTime", new navigateKeyCclTime());
            processMap.put("navigateKeyCclTimestr",
                    new navigateKeyCclTimestr());
            processMap.put("navigateKeysCcl", new navigateKeysCcl());
            processMap.put("navigateKeysCclTime", new navigateKeysCclTime());
            processMap.put("navigateKeysCclTimestr",
                    new navigateKeysCclTimestr());
            processMap.put("navigateKeyCriteria", new navigateKeyCriteria());
            processMap.put("navigateKeyCriteriaTime",
                    new navigateKeyCriteriaTime());
            processMap.put("navigateKeyCriteriaTimestr",
                    new navigateKeyCriteriaTimestr());
            processMap.put("navigateKeysCriteria", new navigateKeysCriteria());
            processMap.put("navigateKeysCriteriaTime",
                    new navigateKeysCriteriaTime());
            processMap.put("navigateKeysCriteriaTimestr",
                    new navigateKeysCriteriaTimestr());
            return processMap;
        }

        public static class navigateKeyRecord extends
                org.apache.thrift.ProcessFunction {
            public navigateKeyRecord() {
                super("navigateKeyRecord");
            }

            public navigateKeyRecord_args getEmptyArgsInstance() {
                return new navigateKeyRecord_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeyRecord_result getResult(I iface,
                    navigateKeyRecord_args args)
                    throws org.apache.thrift.TException {
                navigateKeyRecord_result result = new navigateKeyRecord_result();
                try {
                    result.success = iface.navigateKeyRecord(args.key,
                            args.record, args.creds, args.transaction,
                            args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex3) {
                    result.ex3 = ex3;
                }
                return result;
            }
        }

        public static class navigateKeyRecordTime extends
                org.apache.thrift.ProcessFunction {
            public navigateKeyRecordTime() {
                super("navigateKeyRecordTime");
            }

            public navigateKeyRecordTime_args getEmptyArgsInstance() {
                return new navigateKeyRecordTime_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeyRecordTime_result getResult(I iface,
                    navigateKeyRecordTime_args args)
                    throws org.apache.thrift.TException {
                navigateKeyRecordTime_result result = new navigateKeyRecordTime_result();
                try {
                    result.success = iface.navigateKeyRecordTime(args.key,
                            args.record, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex3) {
                    result.ex3 = ex3;
                }
                return result;
            }
        }

        public static class navigateKeyRecordTimestr extends
                org.apache.thrift.ProcessFunction {
            public navigateKeyRecordTimestr() {
                super("navigateKeyRecordTimestr");
            }

            public navigateKeyRecordTimestr_args getEmptyArgsInstance() {
                return new navigateKeyRecordTimestr_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeyRecordTimestr_result getResult(I iface,
                    navigateKeyRecordTimestr_args args)
                    throws org.apache.thrift.TException {
                navigateKeyRecordTimestr_result result = new navigateKeyRecordTimestr_result();
                try {
                    result.success = iface.navigateKeyRecordTimestr(args.key,
                            args.record, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeysRecord extends
                org.apache.thrift.ProcessFunction {
            public navigateKeysRecord() {
                super("navigateKeysRecord");
            }

            public navigateKeysRecord_args getEmptyArgsInstance() {
                return new navigateKeysRecord_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeysRecord_result getResult(I iface,
                    navigateKeysRecord_args args)
                    throws org.apache.thrift.TException {
                navigateKeysRecord_result result = new navigateKeysRecord_result();
                try {
                    result.success = iface.navigateKeysRecord(args.keys,
                            args.record, args.creds, args.transaction,
                            args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex3) {
                    result.ex3 = ex3;
                }
                return result;
            }
        }

        public static class navigateKeysRecordTime extends
                org.apache.thrift.ProcessFunction {
            public navigateKeysRecordTime() {
                super("navigateKeysRecordTime");
            }

            public navigateKeysRecordTime_args getEmptyArgsInstance() {
                return new navigateKeysRecordTime_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeysRecordTime_result getResult(I iface,
                    navigateKeysRecordTime_args args)
                    throws org.apache.thrift.TException {
                navigateKeysRecordTime_result result = new navigateKeysRecordTime_result();
                try {
                    result.success = iface.navigateKeysRecordTime(args.keys,
                            args.record, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex3) {
                    result.ex3 = ex3;
                }
                return result;
            }
        }

        public static class navigateKeysRecordTimestr extends
                org.apache.thrift.ProcessFunction {
            public navigateKeysRecordTimestr() {
                super("navigateKeysRecordTimestr");
            }

            public navigateKeysRecordTimestr_args getEmptyArgsInstance() {
                return new navigateKeysRecordTimestr_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeysRecordTimestr_result getResult(I iface,
                    navigateKeysRecordTimestr_args args)
                    throws org.apache.thrift.TException {
                navigateKeysRecordTimestr_result result = new navigateKeysRecordTimestr_result();
                try {
                    result.success = iface.navigateKeysRecordTimestr(args.keys,
                            args.record, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeysRecords extends
                org.apache.thrift.ProcessFunction {
            public navigateKeysRecords() {
                super("navigateKeysRecords");
            }

            public navigateKeysRecords_args getEmptyArgsInstance() {
                return new navigateKeysRecords_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeysRecords_result getResult(I iface,
                    navigateKeysRecords_args args)
                    throws org.apache.thrift.TException {
                navigateKeysRecords_result result = new navigateKeysRecords_result();
                try {
                    result.success = iface.navigateKeysRecords(args.keys,
                            args.records, args.creds, args.transaction,
                            args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex3) {
                    result.ex3 = ex3;
                }
                return result;
            }
        }

        public static class navigateKeyRecords extends
                org.apache.thrift.ProcessFunction {
            public navigateKeyRecords() {
                super("navigateKeyRecords");
            }

            public navigateKeyRecords_args getEmptyArgsInstance() {
                return new navigateKeyRecords_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeyRecords_result getResult(I iface,
                    navigateKeyRecords_args args)
                    throws org.apache.thrift.TException {
                navigateKeyRecords_result result = new navigateKeyRecords_result();
                try {
                    result.success = iface.navigateKeyRecords(args.key,
                            args.records, args.creds, args.transaction,
                            args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex3) {
                    result.ex3 = ex3;
                }
                return result;
            }
        }

        public static class navigateKeyRecordsTime extends
                org.apache.thrift.ProcessFunction {
            public navigateKeyRecordsTime() {
                super("navigateKeyRecordsTime");
            }

            public navigateKeyRecordsTime_args getEmptyArgsInstance() {
                return new navigateKeyRecordsTime_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeyRecordsTime_result getResult(I iface,
                    navigateKeyRecordsTime_args args)
                    throws org.apache.thrift.TException {
                navigateKeyRecordsTime_result result = new navigateKeyRecordsTime_result();
                try {
                    result.success = iface.navigateKeyRecordsTime(args.key,
                            args.records, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex3) {
                    result.ex3 = ex3;
                }
                return result;
            }
        }

        public static class navigateKeyRecordsTimestr extends
                org.apache.thrift.ProcessFunction {
            public navigateKeyRecordsTimestr() {
                super("navigateKeyRecordsTimestr");
            }

            public navigateKeyRecordsTimestr_args getEmptyArgsInstance() {
                return new navigateKeyRecordsTimestr_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeyRecordsTimestr_result getResult(I iface,
                    navigateKeyRecordsTimestr_args args)
                    throws org.apache.thrift.TException {
                navigateKeyRecordsTimestr_result result = new navigateKeyRecordsTimestr_result();
                try {
                    result.success = iface.navigateKeyRecordsTimestr(args.key,
                            args.records, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeysRecordsTime extends
                org.apache.thrift.ProcessFunction {
            public navigateKeysRecordsTime() {
                super("navigateKeysRecordsTime");
            }

            public navigateKeysRecordsTime_args getEmptyArgsInstance() {
                return new navigateKeysRecordsTime_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeysRecordsTime_result getResult(I iface,
                    navigateKeysRecordsTime_args args)
                    throws org.apache.thrift.TException {
                navigateKeysRecordsTime_result result = new navigateKeysRecordsTime_result();
                try {
                    result.success = iface.navigateKeysRecordsTime(args.keys,
                            args.records, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex3) {
                    result.ex3 = ex3;
                }
                return result;
            }
        }

        public static class navigateKeysRecordsTimestr extends
                org.apache.thrift.ProcessFunction {
            public navigateKeysRecordsTimestr() {
                super("navigateKeysRecordsTimestr");
            }

            public navigateKeysRecordsTimestr_args getEmptyArgsInstance() {
                return new navigateKeysRecordsTimestr_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeysRecordsTimestr_result getResult(I iface,
                    navigateKeysRecordsTimestr_args args)
                    throws org.apache.thrift.TException {
                navigateKeysRecordsTimestr_result result = new navigateKeysRecordsTimestr_result();
                try {
                    result.success = iface.navigateKeysRecordsTimestr(args.keys,
                            args.records, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeyCcl extends
                org.apache.thrift.ProcessFunction {
            public navigateKeyCcl() {
                super("navigateKeyCcl");
            }

            public navigateKeyCcl_args getEmptyArgsInstance() {
                return new navigateKeyCcl_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeyCcl_result getResult(I iface,
                    navigateKeyCcl_args args)
                    throws org.apache.thrift.TException {
                navigateKeyCcl_result result = new navigateKeyCcl_result();
                try {
                    result.success = iface.navigateKeyCcl(args.key, args.ccl,
                            args.creds, args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeyCclTime extends
                org.apache.thrift.ProcessFunction {
            public navigateKeyCclTime() {
                super("navigateKeyCclTime");
            }

            public navigateKeyCclTime_args getEmptyArgsInstance() {
                return new navigateKeyCclTime_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeyCclTime_result getResult(I iface,
                    navigateKeyCclTime_args args)
                    throws org.apache.thrift.TException {
                navigateKeyCclTime_result result = new navigateKeyCclTime_result();
                try {
                    result.success = iface.navigateKeyCclTime(args.key,
                            args.ccl, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeyCclTimestr extends
                org.apache.thrift.ProcessFunction {
            public navigateKeyCclTimestr() {
                super("navigateKeyCclTimestr");
            }

            public navigateKeyCclTimestr_args getEmptyArgsInstance() {
                return new navigateKeyCclTimestr_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeyCclTimestr_result getResult(I iface,
                    navigateKeyCclTimestr_args args)
                    throws org.apache.thrift.TException {
                navigateKeyCclTimestr_result result = new navigateKeyCclTimestr_result();
                try {
                    result.success = iface.navigateKeyCclTimestr(args.key,
                            args.ccl, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeysCcl extends
                org.apache.thrift.ProcessFunction {
            public navigateKeysCcl() {
                super("navigateKeysCcl");
            }

            public navigateKeysCcl_args getEmptyArgsInstance() {
                return new navigateKeysCcl_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeysCcl_result getResult(I iface,
                    navigateKeysCcl_args args)
                    throws org.apache.thrift.TException {
                navigateKeysCcl_result result = new navigateKeysCcl_result();
                try {
                    result.success = iface.navigateKeysCcl(args.keys, args.ccl,
                            args.creds, args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeysCclTime extends
                org.apache.thrift.ProcessFunction {
            public navigateKeysCclTime() {
                super("navigateKeysCclTime");
            }

            public navigateKeysCclTime_args getEmptyArgsInstance() {
                return new navigateKeysCclTime_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeysCclTime_result getResult(I iface,
                    navigateKeysCclTime_args args)
                    throws org.apache.thrift.TException {
                navigateKeysCclTime_result result = new navigateKeysCclTime_result();
                try {
                    result.success = iface.navigateKeysCclTime(args.keys,
                            args.ccl, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeysCclTimestr extends
                org.apache.thrift.ProcessFunction {
            public navigateKeysCclTimestr() {
                super("navigateKeysCclTimestr");
            }

            public navigateKeysCclTimestr_args getEmptyArgsInstance() {
                return new navigateKeysCclTimestr_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeysCclTimestr_result getResult(I iface,
                    navigateKeysCclTimestr_args args)
                    throws org.apache.thrift.TException {
                navigateKeysCclTimestr_result result = new navigateKeysCclTimestr_result();
                try {
                    result.success = iface.navigateKeysCclTimestr(args.keys,
                            args.ccl, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeyCriteria extends
                org.apache.thrift.ProcessFunction {
            public navigateKeyCriteria() {
                super("navigateKeyCriteria");
            }

            public navigateKeyCriteria_args getEmptyArgsInstance() {
                return new navigateKeyCriteria_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeyCriteria_result getResult(I iface,
                    navigateKeyCriteria_args args)
                    throws org.apache.thrift.TException {
                navigateKeyCriteria_result result = new navigateKeyCriteria_result();
                try {
                    result.success = iface.navigateKeyCriteria(args.key,
                            args.criteria, args.creds, args.transaction,
                            args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeyCriteriaTime extends
                org.apache.thrift.ProcessFunction {
            public navigateKeyCriteriaTime() {
                super("navigateKeyCriteriaTime");
            }

            public navigateKeyCriteriaTime_args getEmptyArgsInstance() {
                return new navigateKeyCriteriaTime_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeyCriteriaTime_result getResult(I iface,
                    navigateKeyCriteriaTime_args args)
                    throws org.apache.thrift.TException {
                navigateKeyCriteriaTime_result result = new navigateKeyCriteriaTime_result();
                try {
                    result.success = iface.navigateKeyCriteriaTime(args.key,
                            args.criteria, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeyCriteriaTimestr extends
                org.apache.thrift.ProcessFunction {
            public navigateKeyCriteriaTimestr() {
                super("navigateKeyCriteriaTimestr");
            }

            public navigateKeyCriteriaTimestr_args getEmptyArgsInstance() {
                return new navigateKeyCriteriaTimestr_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeyCriteriaTimestr_result getResult(I iface,
                    navigateKeyCriteriaTimestr_args args)
                    throws org.apache.thrift.TException {
                navigateKeyCriteriaTimestr_result result = new navigateKeyCriteriaTimestr_result();
                try {
                    result.success = iface.navigateKeyCriteriaTimestr(args.key,
                            args.criteria, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeysCriteria extends
                org.apache.thrift.ProcessFunction {
            public navigateKeysCriteria() {
                super("navigateKeysCriteria");
            }

            public navigateKeysCriteria_args getEmptyArgsInstance() {
                return new navigateKeysCriteria_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeysCriteria_result getResult(I iface,
                    navigateKeysCriteria_args args)
                    throws org.apache.thrift.TException {
                navigateKeysCriteria_result result = new navigateKeysCriteria_result();
                try {
                    result.success = iface.navigateKeysCriteria(args.keys,
                            args.criteria, args.creds, args.transaction,
                            args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeysCriteriaTime extends
                org.apache.thrift.ProcessFunction {
            public navigateKeysCriteriaTime() {
                super("navigateKeysCriteriaTime");
            }

            public navigateKeysCriteriaTime_args getEmptyArgsInstance() {
                return new navigateKeysCriteriaTime_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeysCriteriaTime_result getResult(I iface,
                    navigateKeysCriteriaTime_args args)
                    throws org.apache.thrift.TException {
                navigateKeysCriteriaTime_result result = new navigateKeysCriteriaTime_result();
                try {
                    result.success = iface.navigateKeysCriteriaTime(args.keys,
                            args.criteria, args.timestamp, args.creds,
                            args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

        public static class navigateKeysCriteriaTimestr extends
                org.apache.thrift.ProcessFunction {
            public navigateKeysCriteriaTimestr() {
                super("navigateKeysCriteriaTimestr");
            }

            public navigateKeysCriteriaTimestr_args getEmptyArgsInstance() {
                return new navigateKeysCriteriaTimestr_args();
            }

            protected boolean isOneway() {
                return false;
            }

            @Override
            protected boolean rethrowUnhandledExceptions() {
                return false;
            }

            public navigateKeysCriteriaTimestr_result getResult(I iface,
                    navigateKeysCriteriaTimestr_args args)
                    throws org.apache.thrift.TException {
                navigateKeysCriteriaTimestr_result result = new navigateKeysCriteriaTimestr_result();
                try {
                    result.success = iface.navigateKeysCriteriaTimestr(
                            args.keys, args.criteria, args.timestamp,
                            args.creds, args.transaction, args.environment);
                }
                catch (com.cinchapi.concourse.thrift.SecurityException ex) {
                    result.ex = ex;
                }
                catch (com.cinchapi.concourse.thrift.TransactionException ex2) {
                    result.ex2 = ex2;
                }
                catch (com.cinchapi.concourse.thrift.ParseException ex3) {
                    result.ex3 = ex3;
                }
                catch (com.cinchapi.concourse.thrift.PermissionException ex4) {
                    result.ex4 = ex4;
                }
                return result;
            }
        }

    }

    public static class AsyncProcessor
            extends org.apache.thrift.TBaseAsyncProcessor {
        private static final org.slf4j.Logger _LOGGER = org.slf4j.LoggerFactory
                .getLogger(AsyncProcessor.class.getName());

        public AsyncProcessor(I iface) {
            super(iface, getProcessMap(
                    new java.util.LinkedHashMap>()));
        }

        protected AsyncProcessor(I iface,
                java.util.Map> processMap) {
            super(iface, getProcessMap(processMap));
        }

        private static  java.util.Map> getProcessMap(
                java.util.Map> processMap) {
            processMap.put("navigateKeyRecord", new navigateKeyRecord());
            processMap.put("navigateKeyRecordTime",
                    new navigateKeyRecordTime());
            processMap.put("navigateKeyRecordTimestr",
                    new navigateKeyRecordTimestr());
            processMap.put("navigateKeysRecord", new navigateKeysRecord());
            processMap.put("navigateKeysRecordTime",
                    new navigateKeysRecordTime());
            processMap.put("navigateKeysRecordTimestr",
                    new navigateKeysRecordTimestr());
            processMap.put("navigateKeysRecords", new navigateKeysRecords());
            processMap.put("navigateKeyRecords", new navigateKeyRecords());
            processMap.put("navigateKeyRecordsTime",
                    new navigateKeyRecordsTime());
            processMap.put("navigateKeyRecordsTimestr",
                    new navigateKeyRecordsTimestr());
            processMap.put("navigateKeysRecordsTime",
                    new navigateKeysRecordsTime());
            processMap.put("navigateKeysRecordsTimestr",
                    new navigateKeysRecordsTimestr());
            processMap.put("navigateKeyCcl", new navigateKeyCcl());
            processMap.put("navigateKeyCclTime", new navigateKeyCclTime());
            processMap.put("navigateKeyCclTimestr",
                    new navigateKeyCclTimestr());
            processMap.put("navigateKeysCcl", new navigateKeysCcl());
            processMap.put("navigateKeysCclTime", new navigateKeysCclTime());
            processMap.put("navigateKeysCclTimestr",
                    new navigateKeysCclTimestr());
            processMap.put("navigateKeyCriteria", new navigateKeyCriteria());
            processMap.put("navigateKeyCriteriaTime",
                    new navigateKeyCriteriaTime());
            processMap.put("navigateKeyCriteriaTimestr",
                    new navigateKeyCriteriaTimestr());
            processMap.put("navigateKeysCriteria", new navigateKeysCriteria());
            processMap.put("navigateKeysCriteriaTime",
                    new navigateKeysCriteriaTime());
            processMap.put("navigateKeysCriteriaTimestr",
                    new navigateKeysCriteriaTimestr());
            return processMap;
        }

        public static class navigateKeyRecord extends
                org.apache.thrift.AsyncProcessFunction>> {
            public navigateKeyRecord() {
                super("navigateKeyRecord");
            }

            public navigateKeyRecord_args getEmptyArgsInstance() {
                return new navigateKeyRecord_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>() {
                    public void onComplete(
                            java.util.Map> o) {
                        navigateKeyRecord_result result = new navigateKeyRecord_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeyRecord_result result = new navigateKeyRecord_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeyRecord_args args,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeyRecord(args.key, args.record, args.creds,
                        args.transaction, args.environment, resultHandler);
            }
        }

        public static class navigateKeyRecordTime extends
                org.apache.thrift.AsyncProcessFunction>> {
            public navigateKeyRecordTime() {
                super("navigateKeyRecordTime");
            }

            public navigateKeyRecordTime_args getEmptyArgsInstance() {
                return new navigateKeyRecordTime_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>() {
                    public void onComplete(
                            java.util.Map> o) {
                        navigateKeyRecordTime_result result = new navigateKeyRecordTime_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeyRecordTime_result result = new navigateKeyRecordTime_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeyRecordTime_args args,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeyRecordTime(args.key, args.record,
                        args.timestamp, args.creds, args.transaction,
                        args.environment, resultHandler);
            }
        }

        public static class navigateKeyRecordTimestr
                extends
                org.apache.thrift.AsyncProcessFunction>> {
            public navigateKeyRecordTimestr() {
                super("navigateKeyRecordTimestr");
            }

            public navigateKeyRecordTimestr_args getEmptyArgsInstance() {
                return new navigateKeyRecordTimestr_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>() {
                    public void onComplete(
                            java.util.Map> o) {
                        navigateKeyRecordTimestr_result result = new navigateKeyRecordTimestr_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeyRecordTimestr_result result = new navigateKeyRecordTimestr_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeyRecordTimestr_args args,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeyRecordTimestr(args.key, args.record,
                        args.timestamp, args.creds, args.transaction,
                        args.environment, resultHandler);
            }
        }

        public static class navigateKeysRecord extends
                org.apache.thrift.AsyncProcessFunction>>> {
            public navigateKeysRecord() {
                super("navigateKeysRecord");
            }

            public navigateKeysRecord_args getEmptyArgsInstance() {
                return new navigateKeysRecord_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>>() {
                    public void onComplete(
                            java.util.Map>> o) {
                        navigateKeysRecord_result result = new navigateKeysRecord_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeysRecord_result result = new navigateKeysRecord_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeysRecord_args args,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeysRecord(args.keys, args.record, args.creds,
                        args.transaction, args.environment, resultHandler);
            }
        }

        public static class navigateKeysRecordTime extends
                org.apache.thrift.AsyncProcessFunction>>> {
            public navigateKeysRecordTime() {
                super("navigateKeysRecordTime");
            }

            public navigateKeysRecordTime_args getEmptyArgsInstance() {
                return new navigateKeysRecordTime_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>>() {
                    public void onComplete(
                            java.util.Map>> o) {
                        navigateKeysRecordTime_result result = new navigateKeysRecordTime_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeysRecordTime_result result = new navigateKeysRecordTime_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeysRecordTime_args args,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeysRecordTime(args.keys, args.record,
                        args.timestamp, args.creds, args.transaction,
                        args.environment, resultHandler);
            }
        }

        public static class navigateKeysRecordTimestr
                extends
                org.apache.thrift.AsyncProcessFunction>>> {
            public navigateKeysRecordTimestr() {
                super("navigateKeysRecordTimestr");
            }

            public navigateKeysRecordTimestr_args getEmptyArgsInstance() {
                return new navigateKeysRecordTimestr_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>>() {
                    public void onComplete(
                            java.util.Map>> o) {
                        navigateKeysRecordTimestr_result result = new navigateKeysRecordTimestr_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeysRecordTimestr_result result = new navigateKeysRecordTimestr_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeysRecordTimestr_args args,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeysRecordTimestr(args.keys, args.record,
                        args.timestamp, args.creds, args.transaction,
                        args.environment, resultHandler);
            }
        }

        public static class navigateKeysRecords extends
                org.apache.thrift.AsyncProcessFunction>>> {
            public navigateKeysRecords() {
                super("navigateKeysRecords");
            }

            public navigateKeysRecords_args getEmptyArgsInstance() {
                return new navigateKeysRecords_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>>() {
                    public void onComplete(
                            java.util.Map>> o) {
                        navigateKeysRecords_result result = new navigateKeysRecords_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeysRecords_result result = new navigateKeysRecords_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeysRecords_args args,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeysRecords(args.keys, args.records, args.creds,
                        args.transaction, args.environment, resultHandler);
            }
        }

        public static class navigateKeyRecords extends
                org.apache.thrift.AsyncProcessFunction>> {
            public navigateKeyRecords() {
                super("navigateKeyRecords");
            }

            public navigateKeyRecords_args getEmptyArgsInstance() {
                return new navigateKeyRecords_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>() {
                    public void onComplete(
                            java.util.Map> o) {
                        navigateKeyRecords_result result = new navigateKeyRecords_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeyRecords_result result = new navigateKeyRecords_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeyRecords_args args,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeyRecords(args.key, args.records, args.creds,
                        args.transaction, args.environment, resultHandler);
            }
        }

        public static class navigateKeyRecordsTime extends
                org.apache.thrift.AsyncProcessFunction>> {
            public navigateKeyRecordsTime() {
                super("navigateKeyRecordsTime");
            }

            public navigateKeyRecordsTime_args getEmptyArgsInstance() {
                return new navigateKeyRecordsTime_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>() {
                    public void onComplete(
                            java.util.Map> o) {
                        navigateKeyRecordsTime_result result = new navigateKeyRecordsTime_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeyRecordsTime_result result = new navigateKeyRecordsTime_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeyRecordsTime_args args,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeyRecordsTime(args.key, args.records,
                        args.timestamp, args.creds, args.transaction,
                        args.environment, resultHandler);
            }
        }

        public static class navigateKeyRecordsTimestr
                extends
                org.apache.thrift.AsyncProcessFunction>> {
            public navigateKeyRecordsTimestr() {
                super("navigateKeyRecordsTimestr");
            }

            public navigateKeyRecordsTimestr_args getEmptyArgsInstance() {
                return new navigateKeyRecordsTimestr_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>() {
                    public void onComplete(
                            java.util.Map> o) {
                        navigateKeyRecordsTimestr_result result = new navigateKeyRecordsTimestr_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeyRecordsTimestr_result result = new navigateKeyRecordsTimestr_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeyRecordsTimestr_args args,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeyRecordsTimestr(args.key, args.records,
                        args.timestamp, args.creds, args.transaction,
                        args.environment, resultHandler);
            }
        }

        public static class navigateKeysRecordsTime
                extends
                org.apache.thrift.AsyncProcessFunction>>> {
            public navigateKeysRecordsTime() {
                super("navigateKeysRecordsTime");
            }

            public navigateKeysRecordsTime_args getEmptyArgsInstance() {
                return new navigateKeysRecordsTime_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>>() {
                    public void onComplete(
                            java.util.Map>> o) {
                        navigateKeysRecordsTime_result result = new navigateKeysRecordsTime_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeysRecordsTime_result result = new navigateKeysRecordsTime_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeysRecordsTime_args args,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeysRecordsTime(args.keys, args.records,
                        args.timestamp, args.creds, args.transaction,
                        args.environment, resultHandler);
            }
        }

        public static class navigateKeysRecordsTimestr
                extends
                org.apache.thrift.AsyncProcessFunction>>> {
            public navigateKeysRecordsTimestr() {
                super("navigateKeysRecordsTimestr");
            }

            public navigateKeysRecordsTimestr_args getEmptyArgsInstance() {
                return new navigateKeysRecordsTimestr_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>>() {
                    public void onComplete(
                            java.util.Map>> o) {
                        navigateKeysRecordsTimestr_result result = new navigateKeysRecordsTimestr_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeysRecordsTimestr_result result = new navigateKeysRecordsTimestr_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeysRecordsTimestr_args args,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeysRecordsTimestr(args.keys, args.records,
                        args.timestamp, args.creds, args.transaction,
                        args.environment, resultHandler);
            }
        }

        public static class navigateKeyCcl extends
                org.apache.thrift.AsyncProcessFunction>> {
            public navigateKeyCcl() {
                super("navigateKeyCcl");
            }

            public navigateKeyCcl_args getEmptyArgsInstance() {
                return new navigateKeyCcl_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>() {
                    public void onComplete(
                            java.util.Map> o) {
                        navigateKeyCcl_result result = new navigateKeyCcl_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeyCcl_result result = new navigateKeyCcl_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeyCcl_args args,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeyCcl(args.key, args.ccl, args.creds,
                        args.transaction, args.environment, resultHandler);
            }
        }

        public static class navigateKeyCclTime extends
                org.apache.thrift.AsyncProcessFunction>> {
            public navigateKeyCclTime() {
                super("navigateKeyCclTime");
            }

            public navigateKeyCclTime_args getEmptyArgsInstance() {
                return new navigateKeyCclTime_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>() {
                    public void onComplete(
                            java.util.Map> o) {
                        navigateKeyCclTime_result result = new navigateKeyCclTime_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeyCclTime_result result = new navigateKeyCclTime_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeyCclTime_args args,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeyCclTime(args.key, args.ccl, args.timestamp,
                        args.creds, args.transaction, args.environment,
                        resultHandler);
            }
        }

        public static class navigateKeyCclTimestr extends
                org.apache.thrift.AsyncProcessFunction>> {
            public navigateKeyCclTimestr() {
                super("navigateKeyCclTimestr");
            }

            public navigateKeyCclTimestr_args getEmptyArgsInstance() {
                return new navigateKeyCclTimestr_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>() {
                    public void onComplete(
                            java.util.Map> o) {
                        navigateKeyCclTimestr_result result = new navigateKeyCclTimestr_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeyCclTimestr_result result = new navigateKeyCclTimestr_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeyCclTimestr_args args,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeyCclTimestr(args.key, args.ccl, args.timestamp,
                        args.creds, args.transaction, args.environment,
                        resultHandler);
            }
        }

        public static class navigateKeysCcl extends
                org.apache.thrift.AsyncProcessFunction>>> {
            public navigateKeysCcl() {
                super("navigateKeysCcl");
            }

            public navigateKeysCcl_args getEmptyArgsInstance() {
                return new navigateKeysCcl_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>>() {
                    public void onComplete(
                            java.util.Map>> o) {
                        navigateKeysCcl_result result = new navigateKeysCcl_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeysCcl_result result = new navigateKeysCcl_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeysCcl_args args,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeysCcl(args.keys, args.ccl, args.creds,
                        args.transaction, args.environment, resultHandler);
            }
        }

        public static class navigateKeysCclTime extends
                org.apache.thrift.AsyncProcessFunction>>> {
            public navigateKeysCclTime() {
                super("navigateKeysCclTime");
            }

            public navigateKeysCclTime_args getEmptyArgsInstance() {
                return new navigateKeysCclTime_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>>() {
                    public void onComplete(
                            java.util.Map>> o) {
                        navigateKeysCclTime_result result = new navigateKeysCclTime_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeysCclTime_result result = new navigateKeysCclTime_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeysCclTime_args args,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeysCclTime(args.keys, args.ccl, args.timestamp,
                        args.creds, args.transaction, args.environment,
                        resultHandler);
            }
        }

        public static class navigateKeysCclTimestr extends
                org.apache.thrift.AsyncProcessFunction>>> {
            public navigateKeysCclTimestr() {
                super("navigateKeysCclTimestr");
            }

            public navigateKeysCclTimestr_args getEmptyArgsInstance() {
                return new navigateKeysCclTimestr_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>>() {
                    public void onComplete(
                            java.util.Map>> o) {
                        navigateKeysCclTimestr_result result = new navigateKeysCclTimestr_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeysCclTimestr_result result = new navigateKeysCclTimestr_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeysCclTimestr_args args,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeysCclTimestr(args.keys, args.ccl,
                        args.timestamp, args.creds, args.transaction,
                        args.environment, resultHandler);
            }
        }

        public static class navigateKeyCriteria extends
                org.apache.thrift.AsyncProcessFunction>> {
            public navigateKeyCriteria() {
                super("navigateKeyCriteria");
            }

            public navigateKeyCriteria_args getEmptyArgsInstance() {
                return new navigateKeyCriteria_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>() {
                    public void onComplete(
                            java.util.Map> o) {
                        navigateKeyCriteria_result result = new navigateKeyCriteria_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeyCriteria_result result = new navigateKeyCriteria_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeyCriteria_args args,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeyCriteria(args.key, args.criteria, args.creds,
                        args.transaction, args.environment, resultHandler);
            }
        }

        public static class navigateKeyCriteriaTime
                extends
                org.apache.thrift.AsyncProcessFunction>> {
            public navigateKeyCriteriaTime() {
                super("navigateKeyCriteriaTime");
            }

            public navigateKeyCriteriaTime_args getEmptyArgsInstance() {
                return new navigateKeyCriteriaTime_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>() {
                    public void onComplete(
                            java.util.Map> o) {
                        navigateKeyCriteriaTime_result result = new navigateKeyCriteriaTime_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeyCriteriaTime_result result = new navigateKeyCriteriaTime_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeyCriteriaTime_args args,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeyCriteriaTime(args.key, args.criteria,
                        args.timestamp, args.creds, args.transaction,
                        args.environment, resultHandler);
            }
        }

        public static class navigateKeyCriteriaTimestr
                extends
                org.apache.thrift.AsyncProcessFunction>> {
            public navigateKeyCriteriaTimestr() {
                super("navigateKeyCriteriaTimestr");
            }

            public navigateKeyCriteriaTimestr_args getEmptyArgsInstance() {
                return new navigateKeyCriteriaTimestr_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>() {
                    public void onComplete(
                            java.util.Map> o) {
                        navigateKeyCriteriaTimestr_result result = new navigateKeyCriteriaTimestr_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeyCriteriaTimestr_result result = new navigateKeyCriteriaTimestr_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeyCriteriaTimestr_args args,
                    org.apache.thrift.async.AsyncMethodCallback>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeyCriteriaTimestr(args.key, args.criteria,
                        args.timestamp, args.creds, args.transaction,
                        args.environment, resultHandler);
            }
        }

        public static class navigateKeysCriteria extends
                org.apache.thrift.AsyncProcessFunction>>> {
            public navigateKeysCriteria() {
                super("navigateKeysCriteria");
            }

            public navigateKeysCriteria_args getEmptyArgsInstance() {
                return new navigateKeysCriteria_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>>() {
                    public void onComplete(
                            java.util.Map>> o) {
                        navigateKeysCriteria_result result = new navigateKeysCriteria_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeysCriteria_result result = new navigateKeysCriteria_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeysCriteria_args args,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeysCriteria(args.keys, args.criteria, args.creds,
                        args.transaction, args.environment, resultHandler);
            }
        }

        public static class navigateKeysCriteriaTime
                extends
                org.apache.thrift.AsyncProcessFunction>>> {
            public navigateKeysCriteriaTime() {
                super("navigateKeysCriteriaTime");
            }

            public navigateKeysCriteriaTime_args getEmptyArgsInstance() {
                return new navigateKeysCriteriaTime_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>>() {
                    public void onComplete(
                            java.util.Map>> o) {
                        navigateKeysCriteriaTime_result result = new navigateKeysCriteriaTime_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeysCriteriaTime_result result = new navigateKeysCriteriaTime_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeysCriteriaTime_args args,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeysCriteriaTime(args.keys, args.criteria,
                        args.timestamp, args.creds, args.transaction,
                        args.environment, resultHandler);
            }
        }

        public static class navigateKeysCriteriaTimestr
                extends
                org.apache.thrift.AsyncProcessFunction>>> {
            public navigateKeysCriteriaTimestr() {
                super("navigateKeysCriteriaTimestr");
            }

            public navigateKeysCriteriaTimestr_args getEmptyArgsInstance() {
                return new navigateKeysCriteriaTimestr_args();
            }

            public org.apache.thrift.async.AsyncMethodCallback>>> getResultHandler(
                    final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb,
                    final int seqid) {
                final org.apache.thrift.AsyncProcessFunction fcall = this;
                return new org.apache.thrift.async.AsyncMethodCallback>>>() {
                    public void onComplete(
                            java.util.Map>> o) {
                        navigateKeysCriteriaTimestr_result result = new navigateKeysCriteriaTimestr_result();
                        result.success = o;
                        try {
                            fcall.sendResponse(fb, result,
                                    org.apache.thrift.protocol.TMessageType.REPLY,
                                    seqid);
                        }
                        catch (org.apache.thrift.transport.TTransportException e) {
                            _LOGGER.error(
                                    "TTransportException writing to internal frame buffer",
                                    e);
                            fb.close();
                        }
                        catch (java.lang.Exception e) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    e);
                            onError(e);
                        }
                    }

                    public void onError(java.lang.Exception e) {
                        byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                        org.apache.thrift.TSerializable msg;
                        navigateKeysCriteriaTimestr_result result = new navigateKeysCriteriaTimestr_result();
                        if(e instanceof com.cinchapi.concourse.thrift.SecurityException) {
                            result.ex = (com.cinchapi.concourse.thrift.SecurityException) e;
                            result.setExIsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.TransactionException) {
                            result.ex2 = (com.cinchapi.concourse.thrift.TransactionException) e;
                            result.setEx2IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.ParseException) {
                            result.ex3 = (com.cinchapi.concourse.thrift.ParseException) e;
                            result.setEx3IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof com.cinchapi.concourse.thrift.PermissionException) {
                            result.ex4 = (com.cinchapi.concourse.thrift.PermissionException) e;
                            result.setEx4IsSet(true);
                            msg = result;
                        }
                        else if(e instanceof org.apache.thrift.transport.TTransportException) {
                            _LOGGER.error("TTransportException inside handler",
                                    e);
                            fb.close();
                            return;
                        }
                        else if(e instanceof org.apache.thrift.TApplicationException) {
                            _LOGGER.error(
                                    "TApplicationException inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = (org.apache.thrift.TApplicationException) e;
                        }
                        else {
                            _LOGGER.error("Exception inside handler", e);
                            msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                            msg = new org.apache.thrift.TApplicationException(
                                    org.apache.thrift.TApplicationException.INTERNAL_ERROR,
                                    e.getMessage());
                        }
                        try {
                            fcall.sendResponse(fb, msg, msgType, seqid);
                        }
                        catch (java.lang.Exception ex) {
                            _LOGGER.error(
                                    "Exception writing to internal frame buffer",
                                    ex);
                            fb.close();
                        }
                    }
                };
            }

            protected boolean isOneway() {
                return false;
            }

            public void start(I iface, navigateKeysCriteriaTimestr_args args,
                    org.apache.thrift.async.AsyncMethodCallback>>> resultHandler)
                    throws org.apache.thrift.TException {
                iface.navigateKeysCriteriaTimestr(args.keys, args.criteria,
                        args.timestamp, args.creds, args.transaction,
                        args.environment, resultHandler);
            }
        }

    }

    public static class navigateKeyRecord_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyRecord_args");

        private static final org.apache.thrift.protocol.TField KEY_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "key", org.apache.thrift.protocol.TType.STRING, (short) 1);
        private static final org.apache.thrift.protocol.TField RECORD_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "record", org.apache.thrift.protocol.TType.I64, (short) 2);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 4);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 5);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyRecord_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyRecord_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.lang.String key; // required
        public long record; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEY((short) 1, "key"),
            RECORD((short) 2, "record"),
            CREDS((short) 3, "creds"),
            TRANSACTION((short) 4, "transaction"),
            ENVIRONMENT((short) 5, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEY
                    return KEY;
                case 2: // RECORD
                    return RECORD;
                case 3: // CREDS
                    return CREDS;
                case 4: // TRANSACTION
                    return TRANSACTION;
                case 5: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        private static final int __RECORD_ISSET_ID = 0;
        private byte __isset_bitfield = 0;
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEY,
                    new org.apache.thrift.meta_data.FieldMetaData("key",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.RECORD,
                    new org.apache.thrift.meta_data.FieldMetaData("record",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.I64)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyRecord_args.class, metaDataMap);
        }

        public navigateKeyRecord_args() {}

        public navigateKeyRecord_args(java.lang.String key, long record,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.key = key;
            this.record = record;
            setRecordIsSet(true);
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyRecord_args(navigateKeyRecord_args other) {
            __isset_bitfield = other.__isset_bitfield;
            if(other.isSetKey()) {
                this.key = other.key;
            }
            this.record = other.record;
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeyRecord_args deepCopy() {
            return new navigateKeyRecord_args(this);
        }

        @Override
        public void clear() {
            this.key = null;
            setRecordIsSet(false);
            this.record = 0;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getKey() {
            return this.key;
        }

        public navigateKeyRecord_args setKey(
                @org.apache.thrift.annotation.Nullable java.lang.String key) {
            this.key = key;
            return this;
        }

        public void unsetKey() {
            this.key = null;
        }

        /**
         * Returns true if field key is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKey() {
            return this.key != null;
        }

        public void setKeyIsSet(boolean value) {
            if(!value) {
                this.key = null;
            }
        }

        public long getRecord() {
            return this.record;
        }

        public navigateKeyRecord_args setRecord(long record) {
            this.record = record;
            setRecordIsSet(true);
            return this;
        }

        public void unsetRecord() {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .clearBit(__isset_bitfield, __RECORD_ISSET_ID);
        }

        /**
         * Returns true if field record is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetRecord() {
            return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield,
                    __RECORD_ISSET_ID);
        }

        public void setRecordIsSet(boolean value) {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .setBit(__isset_bitfield, __RECORD_ISSET_ID, value);
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeyRecord_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeyRecord_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeyRecord_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEY:
                if(value == null) {
                    unsetKey();
                }
                else {
                    setKey((java.lang.String) value);
                }
                break;

            case RECORD:
                if(value == null) {
                    unsetRecord();
                }
                else {
                    setRecord((java.lang.Long) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEY:
                return getKey();

            case RECORD:
                return getRecord();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEY:
                return isSetKey();
            case RECORD:
                return isSetRecord();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyRecord_args)
                return this.equals((navigateKeyRecord_args) that);
            return false;
        }

        public boolean equals(navigateKeyRecord_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_key = true && this.isSetKey();
            boolean that_present_key = true && that.isSetKey();
            if(this_present_key || that_present_key) {
                if(!(this_present_key && that_present_key))
                    return false;
                if(!this.key.equals(that.key))
                    return false;
            }

            boolean this_present_record = true;
            boolean that_present_record = true;
            if(this_present_record || that_present_record) {
                if(!(this_present_record && that_present_record))
                    return false;
                if(this.record != that.record)
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKey()) ? 131071 : 524287);
            if(isSetKey())
                hashCode = hashCode * 8191 + key.hashCode();

            hashCode = hashCode * 8191
                    + org.apache.thrift.TBaseHelper.hashCode(record);

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyRecord_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKey())
                    .compareTo(other.isSetKey());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKey()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.key, other.key);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetRecord())
                    .compareTo(other.isSetRecord());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetRecord()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.record, other.record);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyRecord_args(");
            boolean first = true;

            sb.append("key:");
            if(this.key == null) {
                sb.append("null");
            }
            else {
                sb.append(this.key);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("record:");
            sb.append(this.record);
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                // it doesn't seem like you should have to do this, but java
                // serialization is wacky, and doesn't call the default
                // constructor.
                __isset_bitfield = 0;
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyRecord_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecord_argsStandardScheme getScheme() {
                return new navigateKeyRecord_argsStandardScheme();
            }
        }

        private static class navigateKeyRecord_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyRecord_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEY
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.key = iprot.readString();
                            struct.setKeyIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // RECORD
                        if(schemeField.type == org.apache.thrift.protocol.TType.I64) {
                            struct.record = iprot.readI64();
                            struct.setRecordIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyRecord_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.key != null) {
                    oprot.writeFieldBegin(KEY_FIELD_DESC);
                    oprot.writeString(struct.key);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldBegin(RECORD_FIELD_DESC);
                oprot.writeI64(struct.record);
                oprot.writeFieldEnd();
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyRecord_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecord_argsTupleScheme getScheme() {
                return new navigateKeyRecord_argsTupleScheme();
            }
        }

        private static class navigateKeyRecord_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecord_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKey()) {
                    optionals.set(0);
                }
                if(struct.isSetRecord()) {
                    optionals.set(1);
                }
                if(struct.isSetCreds()) {
                    optionals.set(2);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(3);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetKey()) {
                    oprot.writeString(struct.key);
                }
                if(struct.isSetRecord()) {
                    oprot.writeI64(struct.record);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecord_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    struct.key = iprot.readString();
                    struct.setKeyIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.record = iprot.readI64();
                    struct.setRecordIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyRecord_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyRecord_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyRecord_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyRecord_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.SetMetaData(
                                            org.apache.thrift.protocol.TType.SET,
                                            new org.apache.thrift.meta_data.StructMetaData(
                                                    org.apache.thrift.protocol.TType.STRUCT,
                                                    com.cinchapi.concourse.thrift.TObject.class)))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyRecord_result.class, metaDataMap);
        }

        public navigateKeyRecord_result() {}

        public navigateKeyRecord_result(
                java.util.Map> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.PermissionException ex3) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyRecord_result(navigateKeyRecord_result other) {
            if(other.isSetSuccess()) {
                java.util.Map> __this__success = new java.util.LinkedHashMap>(
                        other.success.size());
                for (java.util.Map.Entry> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Set other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Set __this__success_copy_value = new java.util.LinkedHashSet(
                            other_element_value.size());
                    for (com.cinchapi.concourse.thrift.TObject other_element_value_element : other_element_value) {
                        __this__success_copy_value
                                .add(new com.cinchapi.concourse.thrift.TObject(
                                        other_element_value_element));
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex3);
            }
        }

        public navigateKeyRecord_result deepCopy() {
            return new navigateKeyRecord_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Set val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map> getSuccess() {
            return this.success;
        }

        public navigateKeyRecord_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeyRecord_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeyRecord_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx3() {
            return this.ex3;
        }

        public navigateKeyRecord_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyRecord_result)
                return this.equals((navigateKeyRecord_result) that);
            return false;
        }

        public boolean equals(navigateKeyRecord_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyRecord_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyRecord_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyRecord_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecord_resultStandardScheme getScheme() {
                return new navigateKeyRecord_resultStandardScheme();
            }
        }

        private static class navigateKeyRecord_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyRecord_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map0 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>(
                                        2 * _map0.size);
                                long _key1;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val2;
                                for (int _i3 = 0; _i3 < _map0.size; ++_i3) {
                                    _key1 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TSet _set4 = iprot
                                                .readSetBegin();
                                        _val2 = new java.util.LinkedHashSet(
                                                2 * _set4.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem5;
                                        for (int _i6 = 0; _i6 < _set4.size; ++_i6) {
                                            _elem5 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem5.read(iprot);
                                            _val2.add(_elem5);
                                        }
                                        iprot.readSetEnd();
                                    }
                                    struct.success.put(_key1, _val2);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyRecord_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                struct.success.size()));
                        for (java.util.Map.Entry> _iter7 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter7.getKey());
                            {
                                oprot.writeSetBegin(
                                        new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                _iter7.getValue().size()));
                                for (com.cinchapi.concourse.thrift.TObject _iter8 : _iter7
                                        .getValue()) {
                                    _iter8.write(oprot);
                                }
                                oprot.writeSetEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyRecord_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecord_resultTupleScheme getScheme() {
                return new navigateKeyRecord_resultTupleScheme();
            }
        }

        private static class navigateKeyRecord_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecord_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                oprot.writeBitSet(optionals, 4);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry> _iter9 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter9.getKey());
                            {
                                oprot.writeI32(_iter9.getValue().size());
                                for (com.cinchapi.concourse.thrift.TObject _iter10 : _iter9
                                        .getValue()) {
                                    _iter10.write(oprot);
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecord_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(4);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map11 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>(
                                2 * _map11.size);
                        long _key12;
                        @org.apache.thrift.annotation.Nullable java.util.Set _val13;
                        for (int _i14 = 0; _i14 < _map11.size; ++_i14) {
                            _key12 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TSet _set15 = new org.apache.thrift.protocol.TSet(
                                        org.apache.thrift.protocol.TType.STRUCT,
                                        iprot.readI32());
                                _val13 = new java.util.LinkedHashSet(
                                        2 * _set15.size);
                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem16;
                                for (int _i17 = 0; _i17 < _set15.size; ++_i17) {
                                    _elem16 = new com.cinchapi.concourse.thrift.TObject();
                                    _elem16.read(iprot);
                                    _val13.add(_elem16);
                                }
                            }
                            struct.success.put(_key12, _val13);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyRecordTime_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyRecordTime_args");

        private static final org.apache.thrift.protocol.TField KEY_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "key", org.apache.thrift.protocol.TType.STRING, (short) 1);
        private static final org.apache.thrift.protocol.TField RECORD_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "record", org.apache.thrift.protocol.TType.I64, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.I64, (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyRecordTime_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyRecordTime_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.lang.String key; // required
        public long record; // required
        public long timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEY((short) 1, "key"),
            RECORD((short) 2, "record"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEY
                    return KEY;
                case 2: // RECORD
                    return RECORD;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        private static final int __RECORD_ISSET_ID = 0;
        private static final int __TIMESTAMP_ISSET_ID = 1;
        private byte __isset_bitfield = 0;
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEY,
                    new org.apache.thrift.meta_data.FieldMetaData("key",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.RECORD,
                    new org.apache.thrift.meta_data.FieldMetaData("record",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.I64)));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.I64)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyRecordTime_args.class, metaDataMap);
        }

        public navigateKeyRecordTime_args() {}

        public navigateKeyRecordTime_args(java.lang.String key, long record,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.key = key;
            this.record = record;
            setRecordIsSet(true);
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyRecordTime_args(navigateKeyRecordTime_args other) {
            __isset_bitfield = other.__isset_bitfield;
            if(other.isSetKey()) {
                this.key = other.key;
            }
            this.record = other.record;
            this.timestamp = other.timestamp;
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeyRecordTime_args deepCopy() {
            return new navigateKeyRecordTime_args(this);
        }

        @Override
        public void clear() {
            this.key = null;
            setRecordIsSet(false);
            this.record = 0;
            setTimestampIsSet(false);
            this.timestamp = 0;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getKey() {
            return this.key;
        }

        public navigateKeyRecordTime_args setKey(
                @org.apache.thrift.annotation.Nullable java.lang.String key) {
            this.key = key;
            return this;
        }

        public void unsetKey() {
            this.key = null;
        }

        /**
         * Returns true if field key is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKey() {
            return this.key != null;
        }

        public void setKeyIsSet(boolean value) {
            if(!value) {
                this.key = null;
            }
        }

        public long getRecord() {
            return this.record;
        }

        public navigateKeyRecordTime_args setRecord(long record) {
            this.record = record;
            setRecordIsSet(true);
            return this;
        }

        public void unsetRecord() {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .clearBit(__isset_bitfield, __RECORD_ISSET_ID);
        }

        /**
         * Returns true if field record is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetRecord() {
            return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield,
                    __RECORD_ISSET_ID);
        }

        public void setRecordIsSet(boolean value) {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .setBit(__isset_bitfield, __RECORD_ISSET_ID, value);
        }

        public long getTimestamp() {
            return this.timestamp;
        }

        public navigateKeyRecordTime_args setTimestamp(long timestamp) {
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            return this;
        }

        public void unsetTimestamp() {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .clearBit(__isset_bitfield, __TIMESTAMP_ISSET_ID);
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield,
                    __TIMESTAMP_ISSET_ID);
        }

        public void setTimestampIsSet(boolean value) {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .setBit(__isset_bitfield, __TIMESTAMP_ISSET_ID, value);
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeyRecordTime_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeyRecordTime_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeyRecordTime_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEY:
                if(value == null) {
                    unsetKey();
                }
                else {
                    setKey((java.lang.String) value);
                }
                break;

            case RECORD:
                if(value == null) {
                    unsetRecord();
                }
                else {
                    setRecord((java.lang.Long) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.Long) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEY:
                return getKey();

            case RECORD:
                return getRecord();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEY:
                return isSetKey();
            case RECORD:
                return isSetRecord();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyRecordTime_args)
                return this.equals((navigateKeyRecordTime_args) that);
            return false;
        }

        public boolean equals(navigateKeyRecordTime_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_key = true && this.isSetKey();
            boolean that_present_key = true && that.isSetKey();
            if(this_present_key || that_present_key) {
                if(!(this_present_key && that_present_key))
                    return false;
                if(!this.key.equals(that.key))
                    return false;
            }

            boolean this_present_record = true;
            boolean that_present_record = true;
            if(this_present_record || that_present_record) {
                if(!(this_present_record && that_present_record))
                    return false;
                if(this.record != that.record)
                    return false;
            }

            boolean this_present_timestamp = true;
            boolean that_present_timestamp = true;
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(this.timestamp != that.timestamp)
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKey()) ? 131071 : 524287);
            if(isSetKey())
                hashCode = hashCode * 8191 + key.hashCode();

            hashCode = hashCode * 8191
                    + org.apache.thrift.TBaseHelper.hashCode(record);

            hashCode = hashCode * 8191
                    + org.apache.thrift.TBaseHelper.hashCode(timestamp);

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyRecordTime_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKey())
                    .compareTo(other.isSetKey());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKey()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.key, other.key);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetRecord())
                    .compareTo(other.isSetRecord());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetRecord()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.record, other.record);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyRecordTime_args(");
            boolean first = true;

            sb.append("key:");
            if(this.key == null) {
                sb.append("null");
            }
            else {
                sb.append(this.key);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("record:");
            sb.append(this.record);
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            sb.append(this.timestamp);
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                // it doesn't seem like you should have to do this, but java
                // serialization is wacky, and doesn't call the default
                // constructor.
                __isset_bitfield = 0;
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyRecordTime_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordTime_argsStandardScheme getScheme() {
                return new navigateKeyRecordTime_argsStandardScheme();
            }
        }

        private static class navigateKeyRecordTime_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyRecordTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEY
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.key = iprot.readString();
                            struct.setKeyIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // RECORD
                        if(schemeField.type == org.apache.thrift.protocol.TType.I64) {
                            struct.record = iprot.readI64();
                            struct.setRecordIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.I64) {
                            struct.timestamp = iprot.readI64();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyRecordTime_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.key != null) {
                    oprot.writeFieldBegin(KEY_FIELD_DESC);
                    oprot.writeString(struct.key);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldBegin(RECORD_FIELD_DESC);
                oprot.writeI64(struct.record);
                oprot.writeFieldEnd();
                oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                oprot.writeI64(struct.timestamp);
                oprot.writeFieldEnd();
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyRecordTime_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordTime_argsTupleScheme getScheme() {
                return new navigateKeyRecordTime_argsTupleScheme();
            }
        }

        private static class navigateKeyRecordTime_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKey()) {
                    optionals.set(0);
                }
                if(struct.isSetRecord()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKey()) {
                    oprot.writeString(struct.key);
                }
                if(struct.isSetRecord()) {
                    oprot.writeI64(struct.record);
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeI64(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    struct.key = iprot.readString();
                    struct.setKeyIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.record = iprot.readI64();
                    struct.setRecordIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readI64();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyRecordTime_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyRecordTime_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyRecordTime_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyRecordTime_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.SetMetaData(
                                            org.apache.thrift.protocol.TType.SET,
                                            new org.apache.thrift.meta_data.StructMetaData(
                                                    org.apache.thrift.protocol.TType.STRUCT,
                                                    com.cinchapi.concourse.thrift.TObject.class)))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyRecordTime_result.class, metaDataMap);
        }

        public navigateKeyRecordTime_result() {}

        public navigateKeyRecordTime_result(
                java.util.Map> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.PermissionException ex3) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyRecordTime_result(
                navigateKeyRecordTime_result other) {
            if(other.isSetSuccess()) {
                java.util.Map> __this__success = new java.util.LinkedHashMap>(
                        other.success.size());
                for (java.util.Map.Entry> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Set other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Set __this__success_copy_value = new java.util.LinkedHashSet(
                            other_element_value.size());
                    for (com.cinchapi.concourse.thrift.TObject other_element_value_element : other_element_value) {
                        __this__success_copy_value
                                .add(new com.cinchapi.concourse.thrift.TObject(
                                        other_element_value_element));
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex3);
            }
        }

        public navigateKeyRecordTime_result deepCopy() {
            return new navigateKeyRecordTime_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Set val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map> getSuccess() {
            return this.success;
        }

        public navigateKeyRecordTime_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeyRecordTime_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeyRecordTime_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx3() {
            return this.ex3;
        }

        public navigateKeyRecordTime_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyRecordTime_result)
                return this.equals((navigateKeyRecordTime_result) that);
            return false;
        }

        public boolean equals(navigateKeyRecordTime_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyRecordTime_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyRecordTime_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyRecordTime_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordTime_resultStandardScheme getScheme() {
                return new navigateKeyRecordTime_resultStandardScheme();
            }
        }

        private static class navigateKeyRecordTime_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyRecordTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map18 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>(
                                        2 * _map18.size);
                                long _key19;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val20;
                                for (int _i21 = 0; _i21 < _map18.size; ++_i21) {
                                    _key19 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TSet _set22 = iprot
                                                .readSetBegin();
                                        _val20 = new java.util.LinkedHashSet(
                                                2 * _set22.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem23;
                                        for (int _i24 = 0; _i24 < _set22.size; ++_i24) {
                                            _elem23 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem23.read(iprot);
                                            _val20.add(_elem23);
                                        }
                                        iprot.readSetEnd();
                                    }
                                    struct.success.put(_key19, _val20);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyRecordTime_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                struct.success.size()));
                        for (java.util.Map.Entry> _iter25 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter25.getKey());
                            {
                                oprot.writeSetBegin(
                                        new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                _iter25.getValue().size()));
                                for (com.cinchapi.concourse.thrift.TObject _iter26 : _iter25
                                        .getValue()) {
                                    _iter26.write(oprot);
                                }
                                oprot.writeSetEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyRecordTime_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordTime_resultTupleScheme getScheme() {
                return new navigateKeyRecordTime_resultTupleScheme();
            }
        }

        private static class navigateKeyRecordTime_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                oprot.writeBitSet(optionals, 4);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry> _iter27 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter27.getKey());
                            {
                                oprot.writeI32(_iter27.getValue().size());
                                for (com.cinchapi.concourse.thrift.TObject _iter28 : _iter27
                                        .getValue()) {
                                    _iter28.write(oprot);
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(4);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map29 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>(
                                2 * _map29.size);
                        long _key30;
                        @org.apache.thrift.annotation.Nullable java.util.Set _val31;
                        for (int _i32 = 0; _i32 < _map29.size; ++_i32) {
                            _key30 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TSet _set33 = new org.apache.thrift.protocol.TSet(
                                        org.apache.thrift.protocol.TType.STRUCT,
                                        iprot.readI32());
                                _val31 = new java.util.LinkedHashSet(
                                        2 * _set33.size);
                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem34;
                                for (int _i35 = 0; _i35 < _set33.size; ++_i35) {
                                    _elem34 = new com.cinchapi.concourse.thrift.TObject();
                                    _elem34.read(iprot);
                                    _val31.add(_elem34);
                                }
                            }
                            struct.success.put(_key30, _val31);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyRecordTimestr_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyRecordTimestr_args");

        private static final org.apache.thrift.protocol.TField KEY_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "key", org.apache.thrift.protocol.TType.STRING, (short) 1);
        private static final org.apache.thrift.protocol.TField RECORD_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "record", org.apache.thrift.protocol.TType.I64, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.STRING,
                (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyRecordTimestr_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyRecordTimestr_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.lang.String key; // required
        public long record; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEY((short) 1, "key"),
            RECORD((short) 2, "record"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEY
                    return KEY;
                case 2: // RECORD
                    return RECORD;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        private static final int __RECORD_ISSET_ID = 0;
        private byte __isset_bitfield = 0;
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEY,
                    new org.apache.thrift.meta_data.FieldMetaData("key",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.RECORD,
                    new org.apache.thrift.meta_data.FieldMetaData("record",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.I64)));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyRecordTimestr_args.class, metaDataMap);
        }

        public navigateKeyRecordTimestr_args() {}

        public navigateKeyRecordTimestr_args(java.lang.String key, long record,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.key = key;
            this.record = record;
            setRecordIsSet(true);
            this.timestamp = timestamp;
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyRecordTimestr_args(
                navigateKeyRecordTimestr_args other) {
            __isset_bitfield = other.__isset_bitfield;
            if(other.isSetKey()) {
                this.key = other.key;
            }
            this.record = other.record;
            if(other.isSetTimestamp()) {
                this.timestamp = other.timestamp;
            }
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeyRecordTimestr_args deepCopy() {
            return new navigateKeyRecordTimestr_args(this);
        }

        @Override
        public void clear() {
            this.key = null;
            setRecordIsSet(false);
            this.record = 0;
            this.timestamp = null;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getKey() {
            return this.key;
        }

        public navigateKeyRecordTimestr_args setKey(
                @org.apache.thrift.annotation.Nullable java.lang.String key) {
            this.key = key;
            return this;
        }

        public void unsetKey() {
            this.key = null;
        }

        /**
         * Returns true if field key is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKey() {
            return this.key != null;
        }

        public void setKeyIsSet(boolean value) {
            if(!value) {
                this.key = null;
            }
        }

        public long getRecord() {
            return this.record;
        }

        public navigateKeyRecordTimestr_args setRecord(long record) {
            this.record = record;
            setRecordIsSet(true);
            return this;
        }

        public void unsetRecord() {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .clearBit(__isset_bitfield, __RECORD_ISSET_ID);
        }

        /**
         * Returns true if field record is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetRecord() {
            return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield,
                    __RECORD_ISSET_ID);
        }

        public void setRecordIsSet(boolean value) {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .setBit(__isset_bitfield, __RECORD_ISSET_ID, value);
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getTimestamp() {
            return this.timestamp;
        }

        public navigateKeyRecordTimestr_args setTimestamp(
                @org.apache.thrift.annotation.Nullable java.lang.String timestamp) {
            this.timestamp = timestamp;
            return this;
        }

        public void unsetTimestamp() {
            this.timestamp = null;
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return this.timestamp != null;
        }

        public void setTimestampIsSet(boolean value) {
            if(!value) {
                this.timestamp = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeyRecordTimestr_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeyRecordTimestr_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeyRecordTimestr_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEY:
                if(value == null) {
                    unsetKey();
                }
                else {
                    setKey((java.lang.String) value);
                }
                break;

            case RECORD:
                if(value == null) {
                    unsetRecord();
                }
                else {
                    setRecord((java.lang.Long) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.String) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEY:
                return getKey();

            case RECORD:
                return getRecord();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEY:
                return isSetKey();
            case RECORD:
                return isSetRecord();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyRecordTimestr_args)
                return this.equals((navigateKeyRecordTimestr_args) that);
            return false;
        }

        public boolean equals(navigateKeyRecordTimestr_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_key = true && this.isSetKey();
            boolean that_present_key = true && that.isSetKey();
            if(this_present_key || that_present_key) {
                if(!(this_present_key && that_present_key))
                    return false;
                if(!this.key.equals(that.key))
                    return false;
            }

            boolean this_present_record = true;
            boolean that_present_record = true;
            if(this_present_record || that_present_record) {
                if(!(this_present_record && that_present_record))
                    return false;
                if(this.record != that.record)
                    return false;
            }

            boolean this_present_timestamp = true && this.isSetTimestamp();
            boolean that_present_timestamp = true && that.isSetTimestamp();
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(!this.timestamp.equals(that.timestamp))
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKey()) ? 131071 : 524287);
            if(isSetKey())
                hashCode = hashCode * 8191 + key.hashCode();

            hashCode = hashCode * 8191
                    + org.apache.thrift.TBaseHelper.hashCode(record);

            hashCode = hashCode * 8191 + ((isSetTimestamp()) ? 131071 : 524287);
            if(isSetTimestamp())
                hashCode = hashCode * 8191 + timestamp.hashCode();

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyRecordTimestr_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKey())
                    .compareTo(other.isSetKey());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKey()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.key, other.key);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetRecord())
                    .compareTo(other.isSetRecord());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetRecord()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.record, other.record);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyRecordTimestr_args(");
            boolean first = true;

            sb.append("key:");
            if(this.key == null) {
                sb.append("null");
            }
            else {
                sb.append(this.key);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("record:");
            sb.append(this.record);
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            if(this.timestamp == null) {
                sb.append("null");
            }
            else {
                sb.append(this.timestamp);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                // it doesn't seem like you should have to do this, but java
                // serialization is wacky, and doesn't call the default
                // constructor.
                __isset_bitfield = 0;
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyRecordTimestr_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordTimestr_argsStandardScheme getScheme() {
                return new navigateKeyRecordTimestr_argsStandardScheme();
            }
        }

        private static class navigateKeyRecordTimestr_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyRecordTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEY
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.key = iprot.readString();
                            struct.setKeyIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // RECORD
                        if(schemeField.type == org.apache.thrift.protocol.TType.I64) {
                            struct.record = iprot.readI64();
                            struct.setRecordIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.timestamp = iprot.readString();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyRecordTimestr_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.key != null) {
                    oprot.writeFieldBegin(KEY_FIELD_DESC);
                    oprot.writeString(struct.key);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldBegin(RECORD_FIELD_DESC);
                oprot.writeI64(struct.record);
                oprot.writeFieldEnd();
                if(struct.timestamp != null) {
                    oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                    oprot.writeString(struct.timestamp);
                    oprot.writeFieldEnd();
                }
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyRecordTimestr_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordTimestr_argsTupleScheme getScheme() {
                return new navigateKeyRecordTimestr_argsTupleScheme();
            }
        }

        private static class navigateKeyRecordTimestr_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKey()) {
                    optionals.set(0);
                }
                if(struct.isSetRecord()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKey()) {
                    oprot.writeString(struct.key);
                }
                if(struct.isSetRecord()) {
                    oprot.writeI64(struct.record);
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeString(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    struct.key = iprot.readString();
                    struct.setKeyIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.record = iprot.readI64();
                    struct.setRecordIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readString();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyRecordTimestr_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyRecordTimestr_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyRecordTimestr_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyRecordTimestr_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.SetMetaData(
                                            org.apache.thrift.protocol.TType.SET,
                                            new org.apache.thrift.meta_data.StructMetaData(
                                                    org.apache.thrift.protocol.TType.STRUCT,
                                                    com.cinchapi.concourse.thrift.TObject.class)))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyRecordTimestr_result.class, metaDataMap);
        }

        public navigateKeyRecordTimestr_result() {}

        public navigateKeyRecordTimestr_result(
                java.util.Map> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyRecordTimestr_result(
                navigateKeyRecordTimestr_result other) {
            if(other.isSetSuccess()) {
                java.util.Map> __this__success = new java.util.LinkedHashMap>(
                        other.success.size());
                for (java.util.Map.Entry> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Set other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Set __this__success_copy_value = new java.util.LinkedHashSet(
                            other_element_value.size());
                    for (com.cinchapi.concourse.thrift.TObject other_element_value_element : other_element_value) {
                        __this__success_copy_value
                                .add(new com.cinchapi.concourse.thrift.TObject(
                                        other_element_value_element));
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeyRecordTimestr_result deepCopy() {
            return new navigateKeyRecordTimestr_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Set val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map> getSuccess() {
            return this.success;
        }

        public navigateKeyRecordTimestr_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeyRecordTimestr_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeyRecordTimestr_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeyRecordTimestr_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeyRecordTimestr_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyRecordTimestr_result)
                return this.equals((navigateKeyRecordTimestr_result) that);
            return false;
        }

        public boolean equals(navigateKeyRecordTimestr_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyRecordTimestr_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyRecordTimestr_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyRecordTimestr_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordTimestr_resultStandardScheme getScheme() {
                return new navigateKeyRecordTimestr_resultStandardScheme();
            }
        }

        private static class navigateKeyRecordTimestr_resultStandardScheme
                extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyRecordTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map36 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>(
                                        2 * _map36.size);
                                long _key37;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val38;
                                for (int _i39 = 0; _i39 < _map36.size; ++_i39) {
                                    _key37 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TSet _set40 = iprot
                                                .readSetBegin();
                                        _val38 = new java.util.LinkedHashSet(
                                                2 * _set40.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem41;
                                        for (int _i42 = 0; _i42 < _set40.size; ++_i42) {
                                            _elem41 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem41.read(iprot);
                                            _val38.add(_elem41);
                                        }
                                        iprot.readSetEnd();
                                    }
                                    struct.success.put(_key37, _val38);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyRecordTimestr_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                struct.success.size()));
                        for (java.util.Map.Entry> _iter43 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter43.getKey());
                            {
                                oprot.writeSetBegin(
                                        new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                _iter43.getValue().size()));
                                for (com.cinchapi.concourse.thrift.TObject _iter44 : _iter43
                                        .getValue()) {
                                    _iter44.write(oprot);
                                }
                                oprot.writeSetEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyRecordTimestr_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordTimestr_resultTupleScheme getScheme() {
                return new navigateKeyRecordTimestr_resultTupleScheme();
            }
        }

        private static class navigateKeyRecordTimestr_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry> _iter45 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter45.getKey());
                            {
                                oprot.writeI32(_iter45.getValue().size());
                                for (com.cinchapi.concourse.thrift.TObject _iter46 : _iter45
                                        .getValue()) {
                                    _iter46.write(oprot);
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map47 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>(
                                2 * _map47.size);
                        long _key48;
                        @org.apache.thrift.annotation.Nullable java.util.Set _val49;
                        for (int _i50 = 0; _i50 < _map47.size; ++_i50) {
                            _key48 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TSet _set51 = new org.apache.thrift.protocol.TSet(
                                        org.apache.thrift.protocol.TType.STRUCT,
                                        iprot.readI32());
                                _val49 = new java.util.LinkedHashSet(
                                        2 * _set51.size);
                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem52;
                                for (int _i53 = 0; _i53 < _set51.size; ++_i53) {
                                    _elem52 = new com.cinchapi.concourse.thrift.TObject();
                                    _elem52.read(iprot);
                                    _val49.add(_elem52);
                                }
                            }
                            struct.success.put(_key48, _val49);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysRecord_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysRecord_args");

        private static final org.apache.thrift.protocol.TField KEYS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "keys", org.apache.thrift.protocol.TType.LIST, (short) 1);
        private static final org.apache.thrift.protocol.TField RECORD_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "record", org.apache.thrift.protocol.TType.I64, (short) 2);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 4);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 5);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysRecord_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysRecord_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.List keys; // required
        public long record; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEYS((short) 1, "keys"),
            RECORD((short) 2, "record"),
            CREDS((short) 3, "creds"),
            TRANSACTION((short) 4, "transaction"),
            ENVIRONMENT((short) 5, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEYS
                    return KEYS;
                case 2: // RECORD
                    return RECORD;
                case 3: // CREDS
                    return CREDS;
                case 4: // TRANSACTION
                    return TRANSACTION;
                case 5: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        private static final int __RECORD_ISSET_ID = 0;
        private byte __isset_bitfield = 0;
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEYS,
                    new org.apache.thrift.meta_data.FieldMetaData("keys",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.STRING))));
            tmpMap.put(_Fields.RECORD,
                    new org.apache.thrift.meta_data.FieldMetaData("record",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.I64)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysRecord_args.class, metaDataMap);
        }

        public navigateKeysRecord_args() {}

        public navigateKeysRecord_args(java.util.List keys,
                long record, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.keys = keys;
            this.record = record;
            setRecordIsSet(true);
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysRecord_args(navigateKeysRecord_args other) {
            __isset_bitfield = other.__isset_bitfield;
            if(other.isSetKeys()) {
                java.util.List __this__keys = new java.util.ArrayList(
                        other.keys);
                this.keys = __this__keys;
            }
            this.record = other.record;
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeysRecord_args deepCopy() {
            return new navigateKeysRecord_args(this);
        }

        @Override
        public void clear() {
            this.keys = null;
            setRecordIsSet(false);
            this.record = 0;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        public int getKeysSize() {
            return (this.keys == null) ? 0 : this.keys.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getKeysIterator() {
            return (this.keys == null) ? null : this.keys.iterator();
        }

        public void addToKeys(java.lang.String elem) {
            if(this.keys == null) {
                this.keys = new java.util.ArrayList();
            }
            this.keys.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getKeys() {
            return this.keys;
        }

        public navigateKeysRecord_args setKeys(
                @org.apache.thrift.annotation.Nullable java.util.List keys) {
            this.keys = keys;
            return this;
        }

        public void unsetKeys() {
            this.keys = null;
        }

        /**
         * Returns true if field keys is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKeys() {
            return this.keys != null;
        }

        public void setKeysIsSet(boolean value) {
            if(!value) {
                this.keys = null;
            }
        }

        public long getRecord() {
            return this.record;
        }

        public navigateKeysRecord_args setRecord(long record) {
            this.record = record;
            setRecordIsSet(true);
            return this;
        }

        public void unsetRecord() {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .clearBit(__isset_bitfield, __RECORD_ISSET_ID);
        }

        /**
         * Returns true if field record is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetRecord() {
            return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield,
                    __RECORD_ISSET_ID);
        }

        public void setRecordIsSet(boolean value) {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .setBit(__isset_bitfield, __RECORD_ISSET_ID, value);
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeysRecord_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeysRecord_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeysRecord_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEYS:
                if(value == null) {
                    unsetKeys();
                }
                else {
                    setKeys((java.util.List) value);
                }
                break;

            case RECORD:
                if(value == null) {
                    unsetRecord();
                }
                else {
                    setRecord((java.lang.Long) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEYS:
                return getKeys();

            case RECORD:
                return getRecord();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEYS:
                return isSetKeys();
            case RECORD:
                return isSetRecord();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysRecord_args)
                return this.equals((navigateKeysRecord_args) that);
            return false;
        }

        public boolean equals(navigateKeysRecord_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_keys = true && this.isSetKeys();
            boolean that_present_keys = true && that.isSetKeys();
            if(this_present_keys || that_present_keys) {
                if(!(this_present_keys && that_present_keys))
                    return false;
                if(!this.keys.equals(that.keys))
                    return false;
            }

            boolean this_present_record = true;
            boolean that_present_record = true;
            if(this_present_record || that_present_record) {
                if(!(this_present_record && that_present_record))
                    return false;
                if(this.record != that.record)
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKeys()) ? 131071 : 524287);
            if(isSetKeys())
                hashCode = hashCode * 8191 + keys.hashCode();

            hashCode = hashCode * 8191
                    + org.apache.thrift.TBaseHelper.hashCode(record);

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysRecord_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKeys())
                    .compareTo(other.isSetKeys());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKeys()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.keys, other.keys);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetRecord())
                    .compareTo(other.isSetRecord());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetRecord()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.record, other.record);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysRecord_args(");
            boolean first = true;

            sb.append("keys:");
            if(this.keys == null) {
                sb.append("null");
            }
            else {
                sb.append(this.keys);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("record:");
            sb.append(this.record);
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                // it doesn't seem like you should have to do this, but java
                // serialization is wacky, and doesn't call the default
                // constructor.
                __isset_bitfield = 0;
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysRecord_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecord_argsStandardScheme getScheme() {
                return new navigateKeysRecord_argsStandardScheme();
            }
        }

        private static class navigateKeysRecord_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysRecord_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEYS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list54 = iprot
                                        .readListBegin();
                                struct.keys = new java.util.ArrayList(
                                        _list54.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _elem55;
                                for (int _i56 = 0; _i56 < _list54.size; ++_i56) {
                                    _elem55 = iprot.readString();
                                    struct.keys.add(_elem55);
                                }
                                iprot.readListEnd();
                            }
                            struct.setKeysIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // RECORD
                        if(schemeField.type == org.apache.thrift.protocol.TType.I64) {
                            struct.record = iprot.readI64();
                            struct.setRecordIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysRecord_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.keys != null) {
                    oprot.writeFieldBegin(KEYS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.STRING,
                                        struct.keys.size()));
                        for (java.lang.String _iter57 : struct.keys) {
                            oprot.writeString(_iter57);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldBegin(RECORD_FIELD_DESC);
                oprot.writeI64(struct.record);
                oprot.writeFieldEnd();
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysRecord_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecord_argsTupleScheme getScheme() {
                return new navigateKeysRecord_argsTupleScheme();
            }
        }

        private static class navigateKeysRecord_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecord_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKeys()) {
                    optionals.set(0);
                }
                if(struct.isSetRecord()) {
                    optionals.set(1);
                }
                if(struct.isSetCreds()) {
                    optionals.set(2);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(3);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetKeys()) {
                    {
                        oprot.writeI32(struct.keys.size());
                        for (java.lang.String _iter58 : struct.keys) {
                            oprot.writeString(_iter58);
                        }
                    }
                }
                if(struct.isSetRecord()) {
                    oprot.writeI64(struct.record);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecord_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TList _list59 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.STRING,
                                iprot.readI32());
                        struct.keys = new java.util.ArrayList(
                                _list59.size);
                        @org.apache.thrift.annotation.Nullable java.lang.String _elem60;
                        for (int _i61 = 0; _i61 < _list59.size; ++_i61) {
                            _elem60 = iprot.readString();
                            struct.keys.add(_elem60);
                        }
                    }
                    struct.setKeysIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.record = iprot.readI64();
                    struct.setRecordIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysRecord_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysRecord_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysRecord_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysRecord_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map>> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.MapMetaData(
                                            org.apache.thrift.protocol.TType.MAP,
                                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                                    org.apache.thrift.protocol.TType.STRING),
                                            new org.apache.thrift.meta_data.SetMetaData(
                                                    org.apache.thrift.protocol.TType.SET,
                                                    new org.apache.thrift.meta_data.StructMetaData(
                                                            org.apache.thrift.protocol.TType.STRUCT,
                                                            com.cinchapi.concourse.thrift.TObject.class))))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysRecord_result.class, metaDataMap);
        }

        public navigateKeysRecord_result() {}

        public navigateKeysRecord_result(
                java.util.Map>> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.PermissionException ex3) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysRecord_result(navigateKeysRecord_result other) {
            if(other.isSetSuccess()) {
                java.util.Map>> __this__success = new java.util.LinkedHashMap>>(
                        other.success.size());
                for (java.util.Map.Entry>> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Map> other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Map> __this__success_copy_value = new java.util.LinkedHashMap>(
                            other_element_value.size());
                    for (java.util.Map.Entry> other_element_value_element : other_element_value
                            .entrySet()) {

                        java.lang.String other_element_value_element_key = other_element_value_element
                                .getKey();
                        java.util.Set other_element_value_element_value = other_element_value_element
                                .getValue();

                        java.lang.String __this__success_copy_value_copy_key = other_element_value_element_key;

                        java.util.Set __this__success_copy_value_copy_value = new java.util.LinkedHashSet(
                                other_element_value_element_value.size());
                        for (com.cinchapi.concourse.thrift.TObject other_element_value_element_value_element : other_element_value_element_value) {
                            __this__success_copy_value_copy_value
                                    .add(new com.cinchapi.concourse.thrift.TObject(
                                            other_element_value_element_value_element));
                        }

                        __this__success_copy_value.put(
                                __this__success_copy_value_copy_key,
                                __this__success_copy_value_copy_value);
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex3);
            }
        }

        public navigateKeysRecord_result deepCopy() {
            return new navigateKeysRecord_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Map> val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map>> getSuccess() {
            return this.success;
        }

        public navigateKeysRecord_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map>> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeysRecord_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeysRecord_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx3() {
            return this.ex3;
        }

        public navigateKeysRecord_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysRecord_result)
                return this.equals((navigateKeysRecord_result) that);
            return false;
        }

        public boolean equals(navigateKeysRecord_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysRecord_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysRecord_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysRecord_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecord_resultStandardScheme getScheme() {
                return new navigateKeysRecord_resultStandardScheme();
            }
        }

        private static class navigateKeysRecord_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysRecord_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map62 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>>(
                                        2 * _map62.size);
                                long _key63;
                                @org.apache.thrift.annotation.Nullable java.util.Map> _val64;
                                for (int _i65 = 0; _i65 < _map62.size; ++_i65) {
                                    _key63 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TMap _map66 = iprot
                                                .readMapBegin();
                                        _val64 = new java.util.LinkedHashMap>(
                                                2 * _map66.size);
                                        @org.apache.thrift.annotation.Nullable java.lang.String _key67;
                                        @org.apache.thrift.annotation.Nullable java.util.Set _val68;
                                        for (int _i69 = 0; _i69 < _map66.size; ++_i69) {
                                            _key67 = iprot.readString();
                                            {
                                                org.apache.thrift.protocol.TSet _set70 = iprot
                                                        .readSetBegin();
                                                _val68 = new java.util.LinkedHashSet(
                                                        2 * _set70.size);
                                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem71;
                                                for (int _i72 = 0; _i72 < _set70.size; ++_i72) {
                                                    _elem71 = new com.cinchapi.concourse.thrift.TObject();
                                                    _elem71.read(iprot);
                                                    _val68.add(_elem71);
                                                }
                                                iprot.readSetEnd();
                                            }
                                            _val64.put(_key67, _val68);
                                        }
                                        iprot.readMapEnd();
                                    }
                                    struct.success.put(_key63, _val64);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysRecord_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                struct.success.size()));
                        for (java.util.Map.Entry>> _iter73 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter73.getKey());
                            {
                                oprot.writeMapBegin(
                                        new org.apache.thrift.protocol.TMap(
                                                org.apache.thrift.protocol.TType.STRING,
                                                org.apache.thrift.protocol.TType.SET,
                                                _iter73.getValue().size()));
                                for (java.util.Map.Entry> _iter74 : _iter73
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter74.getKey());
                                    {
                                        oprot.writeSetBegin(
                                                new org.apache.thrift.protocol.TSet(
                                                        org.apache.thrift.protocol.TType.STRUCT,
                                                        _iter74.getValue()
                                                                .size()));
                                        for (com.cinchapi.concourse.thrift.TObject _iter75 : _iter74
                                                .getValue()) {
                                            _iter75.write(oprot);
                                        }
                                        oprot.writeSetEnd();
                                    }
                                }
                                oprot.writeMapEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysRecord_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecord_resultTupleScheme getScheme() {
                return new navigateKeysRecord_resultTupleScheme();
            }
        }

        private static class navigateKeysRecord_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecord_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                oprot.writeBitSet(optionals, 4);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry>> _iter76 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter76.getKey());
                            {
                                oprot.writeI32(_iter76.getValue().size());
                                for (java.util.Map.Entry> _iter77 : _iter76
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter77.getKey());
                                    {
                                        oprot.writeI32(
                                                _iter77.getValue().size());
                                        for (com.cinchapi.concourse.thrift.TObject _iter78 : _iter77
                                                .getValue()) {
                                            _iter78.write(oprot);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecord_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(4);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map79 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>>(
                                2 * _map79.size);
                        long _key80;
                        @org.apache.thrift.annotation.Nullable java.util.Map> _val81;
                        for (int _i82 = 0; _i82 < _map79.size; ++_i82) {
                            _key80 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TMap _map83 = new org.apache.thrift.protocol.TMap(
                                        org.apache.thrift.protocol.TType.STRING,
                                        org.apache.thrift.protocol.TType.SET,
                                        iprot.readI32());
                                _val81 = new java.util.LinkedHashMap>(
                                        2 * _map83.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _key84;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val85;
                                for (int _i86 = 0; _i86 < _map83.size; ++_i86) {
                                    _key84 = iprot.readString();
                                    {
                                        org.apache.thrift.protocol.TSet _set87 = new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                iprot.readI32());
                                        _val85 = new java.util.LinkedHashSet(
                                                2 * _set87.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem88;
                                        for (int _i89 = 0; _i89 < _set87.size; ++_i89) {
                                            _elem88 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem88.read(iprot);
                                            _val85.add(_elem88);
                                        }
                                    }
                                    _val81.put(_key84, _val85);
                                }
                            }
                            struct.success.put(_key80, _val81);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysRecordTime_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysRecordTime_args");

        private static final org.apache.thrift.protocol.TField KEYS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "keys", org.apache.thrift.protocol.TType.LIST, (short) 1);
        private static final org.apache.thrift.protocol.TField RECORD_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "record", org.apache.thrift.protocol.TType.I64, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.I64, (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysRecordTime_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysRecordTime_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.List keys; // required
        public long record; // required
        public long timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEYS((short) 1, "keys"),
            RECORD((short) 2, "record"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEYS
                    return KEYS;
                case 2: // RECORD
                    return RECORD;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        private static final int __RECORD_ISSET_ID = 0;
        private static final int __TIMESTAMP_ISSET_ID = 1;
        private byte __isset_bitfield = 0;
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEYS,
                    new org.apache.thrift.meta_data.FieldMetaData("keys",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.STRING))));
            tmpMap.put(_Fields.RECORD,
                    new org.apache.thrift.meta_data.FieldMetaData("record",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.I64)));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.I64)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysRecordTime_args.class, metaDataMap);
        }

        public navigateKeysRecordTime_args() {}

        public navigateKeysRecordTime_args(
                java.util.List keys, long record,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.keys = keys;
            this.record = record;
            setRecordIsSet(true);
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysRecordTime_args(navigateKeysRecordTime_args other) {
            __isset_bitfield = other.__isset_bitfield;
            if(other.isSetKeys()) {
                java.util.List __this__keys = new java.util.ArrayList(
                        other.keys);
                this.keys = __this__keys;
            }
            this.record = other.record;
            this.timestamp = other.timestamp;
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeysRecordTime_args deepCopy() {
            return new navigateKeysRecordTime_args(this);
        }

        @Override
        public void clear() {
            this.keys = null;
            setRecordIsSet(false);
            this.record = 0;
            setTimestampIsSet(false);
            this.timestamp = 0;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        public int getKeysSize() {
            return (this.keys == null) ? 0 : this.keys.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getKeysIterator() {
            return (this.keys == null) ? null : this.keys.iterator();
        }

        public void addToKeys(java.lang.String elem) {
            if(this.keys == null) {
                this.keys = new java.util.ArrayList();
            }
            this.keys.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getKeys() {
            return this.keys;
        }

        public navigateKeysRecordTime_args setKeys(
                @org.apache.thrift.annotation.Nullable java.util.List keys) {
            this.keys = keys;
            return this;
        }

        public void unsetKeys() {
            this.keys = null;
        }

        /**
         * Returns true if field keys is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKeys() {
            return this.keys != null;
        }

        public void setKeysIsSet(boolean value) {
            if(!value) {
                this.keys = null;
            }
        }

        public long getRecord() {
            return this.record;
        }

        public navigateKeysRecordTime_args setRecord(long record) {
            this.record = record;
            setRecordIsSet(true);
            return this;
        }

        public void unsetRecord() {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .clearBit(__isset_bitfield, __RECORD_ISSET_ID);
        }

        /**
         * Returns true if field record is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetRecord() {
            return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield,
                    __RECORD_ISSET_ID);
        }

        public void setRecordIsSet(boolean value) {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .setBit(__isset_bitfield, __RECORD_ISSET_ID, value);
        }

        public long getTimestamp() {
            return this.timestamp;
        }

        public navigateKeysRecordTime_args setTimestamp(long timestamp) {
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            return this;
        }

        public void unsetTimestamp() {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .clearBit(__isset_bitfield, __TIMESTAMP_ISSET_ID);
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield,
                    __TIMESTAMP_ISSET_ID);
        }

        public void setTimestampIsSet(boolean value) {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .setBit(__isset_bitfield, __TIMESTAMP_ISSET_ID, value);
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeysRecordTime_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeysRecordTime_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeysRecordTime_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEYS:
                if(value == null) {
                    unsetKeys();
                }
                else {
                    setKeys((java.util.List) value);
                }
                break;

            case RECORD:
                if(value == null) {
                    unsetRecord();
                }
                else {
                    setRecord((java.lang.Long) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.Long) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEYS:
                return getKeys();

            case RECORD:
                return getRecord();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEYS:
                return isSetKeys();
            case RECORD:
                return isSetRecord();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysRecordTime_args)
                return this.equals((navigateKeysRecordTime_args) that);
            return false;
        }

        public boolean equals(navigateKeysRecordTime_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_keys = true && this.isSetKeys();
            boolean that_present_keys = true && that.isSetKeys();
            if(this_present_keys || that_present_keys) {
                if(!(this_present_keys && that_present_keys))
                    return false;
                if(!this.keys.equals(that.keys))
                    return false;
            }

            boolean this_present_record = true;
            boolean that_present_record = true;
            if(this_present_record || that_present_record) {
                if(!(this_present_record && that_present_record))
                    return false;
                if(this.record != that.record)
                    return false;
            }

            boolean this_present_timestamp = true;
            boolean that_present_timestamp = true;
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(this.timestamp != that.timestamp)
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKeys()) ? 131071 : 524287);
            if(isSetKeys())
                hashCode = hashCode * 8191 + keys.hashCode();

            hashCode = hashCode * 8191
                    + org.apache.thrift.TBaseHelper.hashCode(record);

            hashCode = hashCode * 8191
                    + org.apache.thrift.TBaseHelper.hashCode(timestamp);

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysRecordTime_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKeys())
                    .compareTo(other.isSetKeys());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKeys()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.keys, other.keys);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetRecord())
                    .compareTo(other.isSetRecord());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetRecord()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.record, other.record);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysRecordTime_args(");
            boolean first = true;

            sb.append("keys:");
            if(this.keys == null) {
                sb.append("null");
            }
            else {
                sb.append(this.keys);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("record:");
            sb.append(this.record);
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            sb.append(this.timestamp);
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                // it doesn't seem like you should have to do this, but java
                // serialization is wacky, and doesn't call the default
                // constructor.
                __isset_bitfield = 0;
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysRecordTime_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordTime_argsStandardScheme getScheme() {
                return new navigateKeysRecordTime_argsStandardScheme();
            }
        }

        private static class navigateKeysRecordTime_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysRecordTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEYS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list90 = iprot
                                        .readListBegin();
                                struct.keys = new java.util.ArrayList(
                                        _list90.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _elem91;
                                for (int _i92 = 0; _i92 < _list90.size; ++_i92) {
                                    _elem91 = iprot.readString();
                                    struct.keys.add(_elem91);
                                }
                                iprot.readListEnd();
                            }
                            struct.setKeysIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // RECORD
                        if(schemeField.type == org.apache.thrift.protocol.TType.I64) {
                            struct.record = iprot.readI64();
                            struct.setRecordIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.I64) {
                            struct.timestamp = iprot.readI64();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysRecordTime_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.keys != null) {
                    oprot.writeFieldBegin(KEYS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.STRING,
                                        struct.keys.size()));
                        for (java.lang.String _iter93 : struct.keys) {
                            oprot.writeString(_iter93);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldBegin(RECORD_FIELD_DESC);
                oprot.writeI64(struct.record);
                oprot.writeFieldEnd();
                oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                oprot.writeI64(struct.timestamp);
                oprot.writeFieldEnd();
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysRecordTime_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordTime_argsTupleScheme getScheme() {
                return new navigateKeysRecordTime_argsTupleScheme();
            }
        }

        private static class navigateKeysRecordTime_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKeys()) {
                    optionals.set(0);
                }
                if(struct.isSetRecord()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKeys()) {
                    {
                        oprot.writeI32(struct.keys.size());
                        for (java.lang.String _iter94 : struct.keys) {
                            oprot.writeString(_iter94);
                        }
                    }
                }
                if(struct.isSetRecord()) {
                    oprot.writeI64(struct.record);
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeI64(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TList _list95 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.STRING,
                                iprot.readI32());
                        struct.keys = new java.util.ArrayList(
                                _list95.size);
                        @org.apache.thrift.annotation.Nullable java.lang.String _elem96;
                        for (int _i97 = 0; _i97 < _list95.size; ++_i97) {
                            _elem96 = iprot.readString();
                            struct.keys.add(_elem96);
                        }
                    }
                    struct.setKeysIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.record = iprot.readI64();
                    struct.setRecordIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readI64();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysRecordTime_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysRecordTime_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysRecordTime_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysRecordTime_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map>> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.MapMetaData(
                                            org.apache.thrift.protocol.TType.MAP,
                                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                                    org.apache.thrift.protocol.TType.STRING),
                                            new org.apache.thrift.meta_data.SetMetaData(
                                                    org.apache.thrift.protocol.TType.SET,
                                                    new org.apache.thrift.meta_data.StructMetaData(
                                                            org.apache.thrift.protocol.TType.STRUCT,
                                                            com.cinchapi.concourse.thrift.TObject.class))))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysRecordTime_result.class, metaDataMap);
        }

        public navigateKeysRecordTime_result() {}

        public navigateKeysRecordTime_result(
                java.util.Map>> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.PermissionException ex3) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysRecordTime_result(
                navigateKeysRecordTime_result other) {
            if(other.isSetSuccess()) {
                java.util.Map>> __this__success = new java.util.LinkedHashMap>>(
                        other.success.size());
                for (java.util.Map.Entry>> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Map> other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Map> __this__success_copy_value = new java.util.LinkedHashMap>(
                            other_element_value.size());
                    for (java.util.Map.Entry> other_element_value_element : other_element_value
                            .entrySet()) {

                        java.lang.String other_element_value_element_key = other_element_value_element
                                .getKey();
                        java.util.Set other_element_value_element_value = other_element_value_element
                                .getValue();

                        java.lang.String __this__success_copy_value_copy_key = other_element_value_element_key;

                        java.util.Set __this__success_copy_value_copy_value = new java.util.LinkedHashSet(
                                other_element_value_element_value.size());
                        for (com.cinchapi.concourse.thrift.TObject other_element_value_element_value_element : other_element_value_element_value) {
                            __this__success_copy_value_copy_value
                                    .add(new com.cinchapi.concourse.thrift.TObject(
                                            other_element_value_element_value_element));
                        }

                        __this__success_copy_value.put(
                                __this__success_copy_value_copy_key,
                                __this__success_copy_value_copy_value);
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex3);
            }
        }

        public navigateKeysRecordTime_result deepCopy() {
            return new navigateKeysRecordTime_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Map> val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map>> getSuccess() {
            return this.success;
        }

        public navigateKeysRecordTime_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map>> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeysRecordTime_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeysRecordTime_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx3() {
            return this.ex3;
        }

        public navigateKeysRecordTime_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysRecordTime_result)
                return this.equals((navigateKeysRecordTime_result) that);
            return false;
        }

        public boolean equals(navigateKeysRecordTime_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysRecordTime_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysRecordTime_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysRecordTime_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordTime_resultStandardScheme getScheme() {
                return new navigateKeysRecordTime_resultStandardScheme();
            }
        }

        private static class navigateKeysRecordTime_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysRecordTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map98 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>>(
                                        2 * _map98.size);
                                long _key99;
                                @org.apache.thrift.annotation.Nullable java.util.Map> _val100;
                                for (int _i101 = 0; _i101 < _map98.size; ++_i101) {
                                    _key99 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TMap _map102 = iprot
                                                .readMapBegin();
                                        _val100 = new java.util.LinkedHashMap>(
                                                2 * _map102.size);
                                        @org.apache.thrift.annotation.Nullable java.lang.String _key103;
                                        @org.apache.thrift.annotation.Nullable java.util.Set _val104;
                                        for (int _i105 = 0; _i105 < _map102.size; ++_i105) {
                                            _key103 = iprot.readString();
                                            {
                                                org.apache.thrift.protocol.TSet _set106 = iprot
                                                        .readSetBegin();
                                                _val104 = new java.util.LinkedHashSet(
                                                        2 * _set106.size);
                                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem107;
                                                for (int _i108 = 0; _i108 < _set106.size; ++_i108) {
                                                    _elem107 = new com.cinchapi.concourse.thrift.TObject();
                                                    _elem107.read(iprot);
                                                    _val104.add(_elem107);
                                                }
                                                iprot.readSetEnd();
                                            }
                                            _val100.put(_key103, _val104);
                                        }
                                        iprot.readMapEnd();
                                    }
                                    struct.success.put(_key99, _val100);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysRecordTime_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                struct.success.size()));
                        for (java.util.Map.Entry>> _iter109 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter109.getKey());
                            {
                                oprot.writeMapBegin(
                                        new org.apache.thrift.protocol.TMap(
                                                org.apache.thrift.protocol.TType.STRING,
                                                org.apache.thrift.protocol.TType.SET,
                                                _iter109.getValue().size()));
                                for (java.util.Map.Entry> _iter110 : _iter109
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter110.getKey());
                                    {
                                        oprot.writeSetBegin(
                                                new org.apache.thrift.protocol.TSet(
                                                        org.apache.thrift.protocol.TType.STRUCT,
                                                        _iter110.getValue()
                                                                .size()));
                                        for (com.cinchapi.concourse.thrift.TObject _iter111 : _iter110
                                                .getValue()) {
                                            _iter111.write(oprot);
                                        }
                                        oprot.writeSetEnd();
                                    }
                                }
                                oprot.writeMapEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysRecordTime_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordTime_resultTupleScheme getScheme() {
                return new navigateKeysRecordTime_resultTupleScheme();
            }
        }

        private static class navigateKeysRecordTime_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                oprot.writeBitSet(optionals, 4);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry>> _iter112 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter112.getKey());
                            {
                                oprot.writeI32(_iter112.getValue().size());
                                for (java.util.Map.Entry> _iter113 : _iter112
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter113.getKey());
                                    {
                                        oprot.writeI32(
                                                _iter113.getValue().size());
                                        for (com.cinchapi.concourse.thrift.TObject _iter114 : _iter113
                                                .getValue()) {
                                            _iter114.write(oprot);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(4);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map115 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>>(
                                2 * _map115.size);
                        long _key116;
                        @org.apache.thrift.annotation.Nullable java.util.Map> _val117;
                        for (int _i118 = 0; _i118 < _map115.size; ++_i118) {
                            _key116 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TMap _map119 = new org.apache.thrift.protocol.TMap(
                                        org.apache.thrift.protocol.TType.STRING,
                                        org.apache.thrift.protocol.TType.SET,
                                        iprot.readI32());
                                _val117 = new java.util.LinkedHashMap>(
                                        2 * _map119.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _key120;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val121;
                                for (int _i122 = 0; _i122 < _map119.size; ++_i122) {
                                    _key120 = iprot.readString();
                                    {
                                        org.apache.thrift.protocol.TSet _set123 = new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                iprot.readI32());
                                        _val121 = new java.util.LinkedHashSet(
                                                2 * _set123.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem124;
                                        for (int _i125 = 0; _i125 < _set123.size; ++_i125) {
                                            _elem124 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem124.read(iprot);
                                            _val121.add(_elem124);
                                        }
                                    }
                                    _val117.put(_key120, _val121);
                                }
                            }
                            struct.success.put(_key116, _val117);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysRecordTimestr_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysRecordTimestr_args");

        private static final org.apache.thrift.protocol.TField KEYS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "keys", org.apache.thrift.protocol.TType.LIST, (short) 1);
        private static final org.apache.thrift.protocol.TField RECORD_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "record", org.apache.thrift.protocol.TType.I64, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.STRING,
                (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysRecordTimestr_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysRecordTimestr_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.List keys; // required
        public long record; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEYS((short) 1, "keys"),
            RECORD((short) 2, "record"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEYS
                    return KEYS;
                case 2: // RECORD
                    return RECORD;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        private static final int __RECORD_ISSET_ID = 0;
        private byte __isset_bitfield = 0;
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEYS,
                    new org.apache.thrift.meta_data.FieldMetaData("keys",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.STRING))));
            tmpMap.put(_Fields.RECORD,
                    new org.apache.thrift.meta_data.FieldMetaData("record",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.I64)));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysRecordTimestr_args.class, metaDataMap);
        }

        public navigateKeysRecordTimestr_args() {}

        public navigateKeysRecordTimestr_args(
                java.util.List keys, long record,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.keys = keys;
            this.record = record;
            setRecordIsSet(true);
            this.timestamp = timestamp;
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysRecordTimestr_args(
                navigateKeysRecordTimestr_args other) {
            __isset_bitfield = other.__isset_bitfield;
            if(other.isSetKeys()) {
                java.util.List __this__keys = new java.util.ArrayList(
                        other.keys);
                this.keys = __this__keys;
            }
            this.record = other.record;
            if(other.isSetTimestamp()) {
                this.timestamp = other.timestamp;
            }
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeysRecordTimestr_args deepCopy() {
            return new navigateKeysRecordTimestr_args(this);
        }

        @Override
        public void clear() {
            this.keys = null;
            setRecordIsSet(false);
            this.record = 0;
            this.timestamp = null;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        public int getKeysSize() {
            return (this.keys == null) ? 0 : this.keys.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getKeysIterator() {
            return (this.keys == null) ? null : this.keys.iterator();
        }

        public void addToKeys(java.lang.String elem) {
            if(this.keys == null) {
                this.keys = new java.util.ArrayList();
            }
            this.keys.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getKeys() {
            return this.keys;
        }

        public navigateKeysRecordTimestr_args setKeys(
                @org.apache.thrift.annotation.Nullable java.util.List keys) {
            this.keys = keys;
            return this;
        }

        public void unsetKeys() {
            this.keys = null;
        }

        /**
         * Returns true if field keys is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKeys() {
            return this.keys != null;
        }

        public void setKeysIsSet(boolean value) {
            if(!value) {
                this.keys = null;
            }
        }

        public long getRecord() {
            return this.record;
        }

        public navigateKeysRecordTimestr_args setRecord(long record) {
            this.record = record;
            setRecordIsSet(true);
            return this;
        }

        public void unsetRecord() {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .clearBit(__isset_bitfield, __RECORD_ISSET_ID);
        }

        /**
         * Returns true if field record is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetRecord() {
            return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield,
                    __RECORD_ISSET_ID);
        }

        public void setRecordIsSet(boolean value) {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .setBit(__isset_bitfield, __RECORD_ISSET_ID, value);
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getTimestamp() {
            return this.timestamp;
        }

        public navigateKeysRecordTimestr_args setTimestamp(
                @org.apache.thrift.annotation.Nullable java.lang.String timestamp) {
            this.timestamp = timestamp;
            return this;
        }

        public void unsetTimestamp() {
            this.timestamp = null;
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return this.timestamp != null;
        }

        public void setTimestampIsSet(boolean value) {
            if(!value) {
                this.timestamp = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeysRecordTimestr_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeysRecordTimestr_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeysRecordTimestr_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEYS:
                if(value == null) {
                    unsetKeys();
                }
                else {
                    setKeys((java.util.List) value);
                }
                break;

            case RECORD:
                if(value == null) {
                    unsetRecord();
                }
                else {
                    setRecord((java.lang.Long) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.String) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEYS:
                return getKeys();

            case RECORD:
                return getRecord();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEYS:
                return isSetKeys();
            case RECORD:
                return isSetRecord();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysRecordTimestr_args)
                return this.equals((navigateKeysRecordTimestr_args) that);
            return false;
        }

        public boolean equals(navigateKeysRecordTimestr_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_keys = true && this.isSetKeys();
            boolean that_present_keys = true && that.isSetKeys();
            if(this_present_keys || that_present_keys) {
                if(!(this_present_keys && that_present_keys))
                    return false;
                if(!this.keys.equals(that.keys))
                    return false;
            }

            boolean this_present_record = true;
            boolean that_present_record = true;
            if(this_present_record || that_present_record) {
                if(!(this_present_record && that_present_record))
                    return false;
                if(this.record != that.record)
                    return false;
            }

            boolean this_present_timestamp = true && this.isSetTimestamp();
            boolean that_present_timestamp = true && that.isSetTimestamp();
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(!this.timestamp.equals(that.timestamp))
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKeys()) ? 131071 : 524287);
            if(isSetKeys())
                hashCode = hashCode * 8191 + keys.hashCode();

            hashCode = hashCode * 8191
                    + org.apache.thrift.TBaseHelper.hashCode(record);

            hashCode = hashCode * 8191 + ((isSetTimestamp()) ? 131071 : 524287);
            if(isSetTimestamp())
                hashCode = hashCode * 8191 + timestamp.hashCode();

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysRecordTimestr_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKeys())
                    .compareTo(other.isSetKeys());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKeys()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.keys, other.keys);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetRecord())
                    .compareTo(other.isSetRecord());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetRecord()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.record, other.record);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysRecordTimestr_args(");
            boolean first = true;

            sb.append("keys:");
            if(this.keys == null) {
                sb.append("null");
            }
            else {
                sb.append(this.keys);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("record:");
            sb.append(this.record);
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            if(this.timestamp == null) {
                sb.append("null");
            }
            else {
                sb.append(this.timestamp);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                // it doesn't seem like you should have to do this, but java
                // serialization is wacky, and doesn't call the default
                // constructor.
                __isset_bitfield = 0;
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysRecordTimestr_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordTimestr_argsStandardScheme getScheme() {
                return new navigateKeysRecordTimestr_argsStandardScheme();
            }
        }

        private static class navigateKeysRecordTimestr_argsStandardScheme
                extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysRecordTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEYS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list126 = iprot
                                        .readListBegin();
                                struct.keys = new java.util.ArrayList(
                                        _list126.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _elem127;
                                for (int _i128 = 0; _i128 < _list126.size; ++_i128) {
                                    _elem127 = iprot.readString();
                                    struct.keys.add(_elem127);
                                }
                                iprot.readListEnd();
                            }
                            struct.setKeysIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // RECORD
                        if(schemeField.type == org.apache.thrift.protocol.TType.I64) {
                            struct.record = iprot.readI64();
                            struct.setRecordIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.timestamp = iprot.readString();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysRecordTimestr_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.keys != null) {
                    oprot.writeFieldBegin(KEYS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.STRING,
                                        struct.keys.size()));
                        for (java.lang.String _iter129 : struct.keys) {
                            oprot.writeString(_iter129);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldBegin(RECORD_FIELD_DESC);
                oprot.writeI64(struct.record);
                oprot.writeFieldEnd();
                if(struct.timestamp != null) {
                    oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                    oprot.writeString(struct.timestamp);
                    oprot.writeFieldEnd();
                }
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysRecordTimestr_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordTimestr_argsTupleScheme getScheme() {
                return new navigateKeysRecordTimestr_argsTupleScheme();
            }
        }

        private static class navigateKeysRecordTimestr_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKeys()) {
                    optionals.set(0);
                }
                if(struct.isSetRecord()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKeys()) {
                    {
                        oprot.writeI32(struct.keys.size());
                        for (java.lang.String _iter130 : struct.keys) {
                            oprot.writeString(_iter130);
                        }
                    }
                }
                if(struct.isSetRecord()) {
                    oprot.writeI64(struct.record);
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeString(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TList _list131 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.STRING,
                                iprot.readI32());
                        struct.keys = new java.util.ArrayList(
                                _list131.size);
                        @org.apache.thrift.annotation.Nullable java.lang.String _elem132;
                        for (int _i133 = 0; _i133 < _list131.size; ++_i133) {
                            _elem132 = iprot.readString();
                            struct.keys.add(_elem132);
                        }
                    }
                    struct.setKeysIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.record = iprot.readI64();
                    struct.setRecordIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readString();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysRecordTimestr_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysRecordTimestr_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysRecordTimestr_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysRecordTimestr_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map>> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.MapMetaData(
                                            org.apache.thrift.protocol.TType.MAP,
                                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                                    org.apache.thrift.protocol.TType.STRING),
                                            new org.apache.thrift.meta_data.SetMetaData(
                                                    org.apache.thrift.protocol.TType.SET,
                                                    new org.apache.thrift.meta_data.StructMetaData(
                                                            org.apache.thrift.protocol.TType.STRUCT,
                                                            com.cinchapi.concourse.thrift.TObject.class))))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysRecordTimestr_result.class, metaDataMap);
        }

        public navigateKeysRecordTimestr_result() {}

        public navigateKeysRecordTimestr_result(
                java.util.Map>> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysRecordTimestr_result(
                navigateKeysRecordTimestr_result other) {
            if(other.isSetSuccess()) {
                java.util.Map>> __this__success = new java.util.LinkedHashMap>>(
                        other.success.size());
                for (java.util.Map.Entry>> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Map> other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Map> __this__success_copy_value = new java.util.LinkedHashMap>(
                            other_element_value.size());
                    for (java.util.Map.Entry> other_element_value_element : other_element_value
                            .entrySet()) {

                        java.lang.String other_element_value_element_key = other_element_value_element
                                .getKey();
                        java.util.Set other_element_value_element_value = other_element_value_element
                                .getValue();

                        java.lang.String __this__success_copy_value_copy_key = other_element_value_element_key;

                        java.util.Set __this__success_copy_value_copy_value = new java.util.LinkedHashSet(
                                other_element_value_element_value.size());
                        for (com.cinchapi.concourse.thrift.TObject other_element_value_element_value_element : other_element_value_element_value) {
                            __this__success_copy_value_copy_value
                                    .add(new com.cinchapi.concourse.thrift.TObject(
                                            other_element_value_element_value_element));
                        }

                        __this__success_copy_value.put(
                                __this__success_copy_value_copy_key,
                                __this__success_copy_value_copy_value);
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeysRecordTimestr_result deepCopy() {
            return new navigateKeysRecordTimestr_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Map> val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map>> getSuccess() {
            return this.success;
        }

        public navigateKeysRecordTimestr_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map>> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeysRecordTimestr_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeysRecordTimestr_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeysRecordTimestr_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeysRecordTimestr_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysRecordTimestr_result)
                return this.equals((navigateKeysRecordTimestr_result) that);
            return false;
        }

        public boolean equals(navigateKeysRecordTimestr_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysRecordTimestr_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysRecordTimestr_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysRecordTimestr_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordTimestr_resultStandardScheme getScheme() {
                return new navigateKeysRecordTimestr_resultStandardScheme();
            }
        }

        private static class navigateKeysRecordTimestr_resultStandardScheme
                extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysRecordTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map134 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>>(
                                        2 * _map134.size);
                                long _key135;
                                @org.apache.thrift.annotation.Nullable java.util.Map> _val136;
                                for (int _i137 = 0; _i137 < _map134.size; ++_i137) {
                                    _key135 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TMap _map138 = iprot
                                                .readMapBegin();
                                        _val136 = new java.util.LinkedHashMap>(
                                                2 * _map138.size);
                                        @org.apache.thrift.annotation.Nullable java.lang.String _key139;
                                        @org.apache.thrift.annotation.Nullable java.util.Set _val140;
                                        for (int _i141 = 0; _i141 < _map138.size; ++_i141) {
                                            _key139 = iprot.readString();
                                            {
                                                org.apache.thrift.protocol.TSet _set142 = iprot
                                                        .readSetBegin();
                                                _val140 = new java.util.LinkedHashSet(
                                                        2 * _set142.size);
                                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem143;
                                                for (int _i144 = 0; _i144 < _set142.size; ++_i144) {
                                                    _elem143 = new com.cinchapi.concourse.thrift.TObject();
                                                    _elem143.read(iprot);
                                                    _val140.add(_elem143);
                                                }
                                                iprot.readSetEnd();
                                            }
                                            _val136.put(_key139, _val140);
                                        }
                                        iprot.readMapEnd();
                                    }
                                    struct.success.put(_key135, _val136);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysRecordTimestr_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                struct.success.size()));
                        for (java.util.Map.Entry>> _iter145 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter145.getKey());
                            {
                                oprot.writeMapBegin(
                                        new org.apache.thrift.protocol.TMap(
                                                org.apache.thrift.protocol.TType.STRING,
                                                org.apache.thrift.protocol.TType.SET,
                                                _iter145.getValue().size()));
                                for (java.util.Map.Entry> _iter146 : _iter145
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter146.getKey());
                                    {
                                        oprot.writeSetBegin(
                                                new org.apache.thrift.protocol.TSet(
                                                        org.apache.thrift.protocol.TType.STRUCT,
                                                        _iter146.getValue()
                                                                .size()));
                                        for (com.cinchapi.concourse.thrift.TObject _iter147 : _iter146
                                                .getValue()) {
                                            _iter147.write(oprot);
                                        }
                                        oprot.writeSetEnd();
                                    }
                                }
                                oprot.writeMapEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysRecordTimestr_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordTimestr_resultTupleScheme getScheme() {
                return new navigateKeysRecordTimestr_resultTupleScheme();
            }
        }

        private static class navigateKeysRecordTimestr_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry>> _iter148 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter148.getKey());
                            {
                                oprot.writeI32(_iter148.getValue().size());
                                for (java.util.Map.Entry> _iter149 : _iter148
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter149.getKey());
                                    {
                                        oprot.writeI32(
                                                _iter149.getValue().size());
                                        for (com.cinchapi.concourse.thrift.TObject _iter150 : _iter149
                                                .getValue()) {
                                            _iter150.write(oprot);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map151 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>>(
                                2 * _map151.size);
                        long _key152;
                        @org.apache.thrift.annotation.Nullable java.util.Map> _val153;
                        for (int _i154 = 0; _i154 < _map151.size; ++_i154) {
                            _key152 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TMap _map155 = new org.apache.thrift.protocol.TMap(
                                        org.apache.thrift.protocol.TType.STRING,
                                        org.apache.thrift.protocol.TType.SET,
                                        iprot.readI32());
                                _val153 = new java.util.LinkedHashMap>(
                                        2 * _map155.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _key156;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val157;
                                for (int _i158 = 0; _i158 < _map155.size; ++_i158) {
                                    _key156 = iprot.readString();
                                    {
                                        org.apache.thrift.protocol.TSet _set159 = new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                iprot.readI32());
                                        _val157 = new java.util.LinkedHashSet(
                                                2 * _set159.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem160;
                                        for (int _i161 = 0; _i161 < _set159.size; ++_i161) {
                                            _elem160 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem160.read(iprot);
                                            _val157.add(_elem160);
                                        }
                                    }
                                    _val153.put(_key156, _val157);
                                }
                            }
                            struct.success.put(_key152, _val153);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysRecords_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysRecords_args");

        private static final org.apache.thrift.protocol.TField KEYS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "keys", org.apache.thrift.protocol.TType.LIST, (short) 1);
        private static final org.apache.thrift.protocol.TField RECORDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "records", org.apache.thrift.protocol.TType.LIST, (short) 2);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 4);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 5);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysRecords_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysRecords_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.List keys; // required
        public @org.apache.thrift.annotation.Nullable java.util.List records; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEYS((short) 1, "keys"),
            RECORDS((short) 2, "records"),
            CREDS((short) 3, "creds"),
            TRANSACTION((short) 4, "transaction"),
            ENVIRONMENT((short) 5, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEYS
                    return KEYS;
                case 2: // RECORDS
                    return RECORDS;
                case 3: // CREDS
                    return CREDS;
                case 4: // TRANSACTION
                    return TRANSACTION;
                case 5: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEYS,
                    new org.apache.thrift.meta_data.FieldMetaData("keys",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.STRING))));
            tmpMap.put(_Fields.RECORDS,
                    new org.apache.thrift.meta_data.FieldMetaData("records",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64))));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysRecords_args.class, metaDataMap);
        }

        public navigateKeysRecords_args() {}

        public navigateKeysRecords_args(java.util.List keys,
                java.util.List records,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.keys = keys;
            this.records = records;
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysRecords_args(navigateKeysRecords_args other) {
            if(other.isSetKeys()) {
                java.util.List __this__keys = new java.util.ArrayList(
                        other.keys);
                this.keys = __this__keys;
            }
            if(other.isSetRecords()) {
                java.util.List __this__records = new java.util.ArrayList(
                        other.records);
                this.records = __this__records;
            }
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeysRecords_args deepCopy() {
            return new navigateKeysRecords_args(this);
        }

        @Override
        public void clear() {
            this.keys = null;
            this.records = null;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        public int getKeysSize() {
            return (this.keys == null) ? 0 : this.keys.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getKeysIterator() {
            return (this.keys == null) ? null : this.keys.iterator();
        }

        public void addToKeys(java.lang.String elem) {
            if(this.keys == null) {
                this.keys = new java.util.ArrayList();
            }
            this.keys.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getKeys() {
            return this.keys;
        }

        public navigateKeysRecords_args setKeys(
                @org.apache.thrift.annotation.Nullable java.util.List keys) {
            this.keys = keys;
            return this;
        }

        public void unsetKeys() {
            this.keys = null;
        }

        /**
         * Returns true if field keys is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKeys() {
            return this.keys != null;
        }

        public void setKeysIsSet(boolean value) {
            if(!value) {
                this.keys = null;
            }
        }

        public int getRecordsSize() {
            return (this.records == null) ? 0 : this.records.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getRecordsIterator() {
            return (this.records == null) ? null : this.records.iterator();
        }

        public void addToRecords(long elem) {
            if(this.records == null) {
                this.records = new java.util.ArrayList();
            }
            this.records.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getRecords() {
            return this.records;
        }

        public navigateKeysRecords_args setRecords(
                @org.apache.thrift.annotation.Nullable java.util.List records) {
            this.records = records;
            return this;
        }

        public void unsetRecords() {
            this.records = null;
        }

        /**
         * Returns true if field records is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetRecords() {
            return this.records != null;
        }

        public void setRecordsIsSet(boolean value) {
            if(!value) {
                this.records = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeysRecords_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeysRecords_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeysRecords_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEYS:
                if(value == null) {
                    unsetKeys();
                }
                else {
                    setKeys((java.util.List) value);
                }
                break;

            case RECORDS:
                if(value == null) {
                    unsetRecords();
                }
                else {
                    setRecords((java.util.List) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEYS:
                return getKeys();

            case RECORDS:
                return getRecords();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEYS:
                return isSetKeys();
            case RECORDS:
                return isSetRecords();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysRecords_args)
                return this.equals((navigateKeysRecords_args) that);
            return false;
        }

        public boolean equals(navigateKeysRecords_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_keys = true && this.isSetKeys();
            boolean that_present_keys = true && that.isSetKeys();
            if(this_present_keys || that_present_keys) {
                if(!(this_present_keys && that_present_keys))
                    return false;
                if(!this.keys.equals(that.keys))
                    return false;
            }

            boolean this_present_records = true && this.isSetRecords();
            boolean that_present_records = true && that.isSetRecords();
            if(this_present_records || that_present_records) {
                if(!(this_present_records && that_present_records))
                    return false;
                if(!this.records.equals(that.records))
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKeys()) ? 131071 : 524287);
            if(isSetKeys())
                hashCode = hashCode * 8191 + keys.hashCode();

            hashCode = hashCode * 8191 + ((isSetRecords()) ? 131071 : 524287);
            if(isSetRecords())
                hashCode = hashCode * 8191 + records.hashCode();

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysRecords_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKeys())
                    .compareTo(other.isSetKeys());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKeys()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.keys, other.keys);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetRecords())
                    .compareTo(other.isSetRecords());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetRecords()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.records, other.records);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysRecords_args(");
            boolean first = true;

            sb.append("keys:");
            if(this.keys == null) {
                sb.append("null");
            }
            else {
                sb.append(this.keys);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("records:");
            if(this.records == null) {
                sb.append("null");
            }
            else {
                sb.append(this.records);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysRecords_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecords_argsStandardScheme getScheme() {
                return new navigateKeysRecords_argsStandardScheme();
            }
        }

        private static class navigateKeysRecords_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysRecords_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEYS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list162 = iprot
                                        .readListBegin();
                                struct.keys = new java.util.ArrayList(
                                        _list162.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _elem163;
                                for (int _i164 = 0; _i164 < _list162.size; ++_i164) {
                                    _elem163 = iprot.readString();
                                    struct.keys.add(_elem163);
                                }
                                iprot.readListEnd();
                            }
                            struct.setKeysIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // RECORDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list165 = iprot
                                        .readListBegin();
                                struct.records = new java.util.ArrayList(
                                        _list165.size);
                                long _elem166;
                                for (int _i167 = 0; _i167 < _list165.size; ++_i167) {
                                    _elem166 = iprot.readI64();
                                    struct.records.add(_elem166);
                                }
                                iprot.readListEnd();
                            }
                            struct.setRecordsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysRecords_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.keys != null) {
                    oprot.writeFieldBegin(KEYS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.STRING,
                                        struct.keys.size()));
                        for (java.lang.String _iter168 : struct.keys) {
                            oprot.writeString(_iter168);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.records != null) {
                    oprot.writeFieldBegin(RECORDS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.I64,
                                        struct.records.size()));
                        for (long _iter169 : struct.records) {
                            oprot.writeI64(_iter169);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysRecords_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecords_argsTupleScheme getScheme() {
                return new navigateKeysRecords_argsTupleScheme();
            }
        }

        private static class navigateKeysRecords_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecords_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKeys()) {
                    optionals.set(0);
                }
                if(struct.isSetRecords()) {
                    optionals.set(1);
                }
                if(struct.isSetCreds()) {
                    optionals.set(2);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(3);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetKeys()) {
                    {
                        oprot.writeI32(struct.keys.size());
                        for (java.lang.String _iter170 : struct.keys) {
                            oprot.writeString(_iter170);
                        }
                    }
                }
                if(struct.isSetRecords()) {
                    {
                        oprot.writeI32(struct.records.size());
                        for (long _iter171 : struct.records) {
                            oprot.writeI64(_iter171);
                        }
                    }
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecords_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TList _list172 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.STRING,
                                iprot.readI32());
                        struct.keys = new java.util.ArrayList(
                                _list172.size);
                        @org.apache.thrift.annotation.Nullable java.lang.String _elem173;
                        for (int _i174 = 0; _i174 < _list172.size; ++_i174) {
                            _elem173 = iprot.readString();
                            struct.keys.add(_elem173);
                        }
                    }
                    struct.setKeysIsSet(true);
                }
                if(incoming.get(1)) {
                    {
                        org.apache.thrift.protocol.TList _list175 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.I64,
                                iprot.readI32());
                        struct.records = new java.util.ArrayList(
                                _list175.size);
                        long _elem176;
                        for (int _i177 = 0; _i177 < _list175.size; ++_i177) {
                            _elem176 = iprot.readI64();
                            struct.records.add(_elem176);
                        }
                    }
                    struct.setRecordsIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysRecords_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysRecords_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysRecords_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysRecords_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map>> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.MapMetaData(
                                            org.apache.thrift.protocol.TType.MAP,
                                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                                    org.apache.thrift.protocol.TType.STRING),
                                            new org.apache.thrift.meta_data.SetMetaData(
                                                    org.apache.thrift.protocol.TType.SET,
                                                    new org.apache.thrift.meta_data.StructMetaData(
                                                            org.apache.thrift.protocol.TType.STRUCT,
                                                            com.cinchapi.concourse.thrift.TObject.class))))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysRecords_result.class, metaDataMap);
        }

        public navigateKeysRecords_result() {}

        public navigateKeysRecords_result(
                java.util.Map>> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.PermissionException ex3) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysRecords_result(navigateKeysRecords_result other) {
            if(other.isSetSuccess()) {
                java.util.Map>> __this__success = new java.util.LinkedHashMap>>(
                        other.success.size());
                for (java.util.Map.Entry>> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Map> other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Map> __this__success_copy_value = new java.util.LinkedHashMap>(
                            other_element_value.size());
                    for (java.util.Map.Entry> other_element_value_element : other_element_value
                            .entrySet()) {

                        java.lang.String other_element_value_element_key = other_element_value_element
                                .getKey();
                        java.util.Set other_element_value_element_value = other_element_value_element
                                .getValue();

                        java.lang.String __this__success_copy_value_copy_key = other_element_value_element_key;

                        java.util.Set __this__success_copy_value_copy_value = new java.util.LinkedHashSet(
                                other_element_value_element_value.size());
                        for (com.cinchapi.concourse.thrift.TObject other_element_value_element_value_element : other_element_value_element_value) {
                            __this__success_copy_value_copy_value
                                    .add(new com.cinchapi.concourse.thrift.TObject(
                                            other_element_value_element_value_element));
                        }

                        __this__success_copy_value.put(
                                __this__success_copy_value_copy_key,
                                __this__success_copy_value_copy_value);
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex3);
            }
        }

        public navigateKeysRecords_result deepCopy() {
            return new navigateKeysRecords_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Map> val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map>> getSuccess() {
            return this.success;
        }

        public navigateKeysRecords_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map>> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeysRecords_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeysRecords_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx3() {
            return this.ex3;
        }

        public navigateKeysRecords_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysRecords_result)
                return this.equals((navigateKeysRecords_result) that);
            return false;
        }

        public boolean equals(navigateKeysRecords_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysRecords_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysRecords_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysRecords_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecords_resultStandardScheme getScheme() {
                return new navigateKeysRecords_resultStandardScheme();
            }
        }

        private static class navigateKeysRecords_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysRecords_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map178 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>>(
                                        2 * _map178.size);
                                long _key179;
                                @org.apache.thrift.annotation.Nullable java.util.Map> _val180;
                                for (int _i181 = 0; _i181 < _map178.size; ++_i181) {
                                    _key179 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TMap _map182 = iprot
                                                .readMapBegin();
                                        _val180 = new java.util.LinkedHashMap>(
                                                2 * _map182.size);
                                        @org.apache.thrift.annotation.Nullable java.lang.String _key183;
                                        @org.apache.thrift.annotation.Nullable java.util.Set _val184;
                                        for (int _i185 = 0; _i185 < _map182.size; ++_i185) {
                                            _key183 = iprot.readString();
                                            {
                                                org.apache.thrift.protocol.TSet _set186 = iprot
                                                        .readSetBegin();
                                                _val184 = new java.util.LinkedHashSet(
                                                        2 * _set186.size);
                                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem187;
                                                for (int _i188 = 0; _i188 < _set186.size; ++_i188) {
                                                    _elem187 = new com.cinchapi.concourse.thrift.TObject();
                                                    _elem187.read(iprot);
                                                    _val184.add(_elem187);
                                                }
                                                iprot.readSetEnd();
                                            }
                                            _val180.put(_key183, _val184);
                                        }
                                        iprot.readMapEnd();
                                    }
                                    struct.success.put(_key179, _val180);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysRecords_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                struct.success.size()));
                        for (java.util.Map.Entry>> _iter189 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter189.getKey());
                            {
                                oprot.writeMapBegin(
                                        new org.apache.thrift.protocol.TMap(
                                                org.apache.thrift.protocol.TType.STRING,
                                                org.apache.thrift.protocol.TType.SET,
                                                _iter189.getValue().size()));
                                for (java.util.Map.Entry> _iter190 : _iter189
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter190.getKey());
                                    {
                                        oprot.writeSetBegin(
                                                new org.apache.thrift.protocol.TSet(
                                                        org.apache.thrift.protocol.TType.STRUCT,
                                                        _iter190.getValue()
                                                                .size()));
                                        for (com.cinchapi.concourse.thrift.TObject _iter191 : _iter190
                                                .getValue()) {
                                            _iter191.write(oprot);
                                        }
                                        oprot.writeSetEnd();
                                    }
                                }
                                oprot.writeMapEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysRecords_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecords_resultTupleScheme getScheme() {
                return new navigateKeysRecords_resultTupleScheme();
            }
        }

        private static class navigateKeysRecords_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecords_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                oprot.writeBitSet(optionals, 4);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry>> _iter192 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter192.getKey());
                            {
                                oprot.writeI32(_iter192.getValue().size());
                                for (java.util.Map.Entry> _iter193 : _iter192
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter193.getKey());
                                    {
                                        oprot.writeI32(
                                                _iter193.getValue().size());
                                        for (com.cinchapi.concourse.thrift.TObject _iter194 : _iter193
                                                .getValue()) {
                                            _iter194.write(oprot);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecords_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(4);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map195 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>>(
                                2 * _map195.size);
                        long _key196;
                        @org.apache.thrift.annotation.Nullable java.util.Map> _val197;
                        for (int _i198 = 0; _i198 < _map195.size; ++_i198) {
                            _key196 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TMap _map199 = new org.apache.thrift.protocol.TMap(
                                        org.apache.thrift.protocol.TType.STRING,
                                        org.apache.thrift.protocol.TType.SET,
                                        iprot.readI32());
                                _val197 = new java.util.LinkedHashMap>(
                                        2 * _map199.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _key200;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val201;
                                for (int _i202 = 0; _i202 < _map199.size; ++_i202) {
                                    _key200 = iprot.readString();
                                    {
                                        org.apache.thrift.protocol.TSet _set203 = new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                iprot.readI32());
                                        _val201 = new java.util.LinkedHashSet(
                                                2 * _set203.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem204;
                                        for (int _i205 = 0; _i205 < _set203.size; ++_i205) {
                                            _elem204 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem204.read(iprot);
                                            _val201.add(_elem204);
                                        }
                                    }
                                    _val197.put(_key200, _val201);
                                }
                            }
                            struct.success.put(_key196, _val197);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyRecords_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyRecords_args");

        private static final org.apache.thrift.protocol.TField KEY_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "key", org.apache.thrift.protocol.TType.STRING, (short) 1);
        private static final org.apache.thrift.protocol.TField RECORDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "records", org.apache.thrift.protocol.TType.LIST, (short) 2);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 4);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 5);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyRecords_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyRecords_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.lang.String key; // required
        public @org.apache.thrift.annotation.Nullable java.util.List records; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEY((short) 1, "key"),
            RECORDS((short) 2, "records"),
            CREDS((short) 3, "creds"),
            TRANSACTION((short) 4, "transaction"),
            ENVIRONMENT((short) 5, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEY
                    return KEY;
                case 2: // RECORDS
                    return RECORDS;
                case 3: // CREDS
                    return CREDS;
                case 4: // TRANSACTION
                    return TRANSACTION;
                case 5: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEY,
                    new org.apache.thrift.meta_data.FieldMetaData("key",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.RECORDS,
                    new org.apache.thrift.meta_data.FieldMetaData("records",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64))));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyRecords_args.class, metaDataMap);
        }

        public navigateKeyRecords_args() {}

        public navigateKeyRecords_args(java.lang.String key,
                java.util.List records,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.key = key;
            this.records = records;
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyRecords_args(navigateKeyRecords_args other) {
            if(other.isSetKey()) {
                this.key = other.key;
            }
            if(other.isSetRecords()) {
                java.util.List __this__records = new java.util.ArrayList(
                        other.records);
                this.records = __this__records;
            }
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeyRecords_args deepCopy() {
            return new navigateKeyRecords_args(this);
        }

        @Override
        public void clear() {
            this.key = null;
            this.records = null;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getKey() {
            return this.key;
        }

        public navigateKeyRecords_args setKey(
                @org.apache.thrift.annotation.Nullable java.lang.String key) {
            this.key = key;
            return this;
        }

        public void unsetKey() {
            this.key = null;
        }

        /**
         * Returns true if field key is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKey() {
            return this.key != null;
        }

        public void setKeyIsSet(boolean value) {
            if(!value) {
                this.key = null;
            }
        }

        public int getRecordsSize() {
            return (this.records == null) ? 0 : this.records.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getRecordsIterator() {
            return (this.records == null) ? null : this.records.iterator();
        }

        public void addToRecords(long elem) {
            if(this.records == null) {
                this.records = new java.util.ArrayList();
            }
            this.records.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getRecords() {
            return this.records;
        }

        public navigateKeyRecords_args setRecords(
                @org.apache.thrift.annotation.Nullable java.util.List records) {
            this.records = records;
            return this;
        }

        public void unsetRecords() {
            this.records = null;
        }

        /**
         * Returns true if field records is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetRecords() {
            return this.records != null;
        }

        public void setRecordsIsSet(boolean value) {
            if(!value) {
                this.records = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeyRecords_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeyRecords_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeyRecords_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEY:
                if(value == null) {
                    unsetKey();
                }
                else {
                    setKey((java.lang.String) value);
                }
                break;

            case RECORDS:
                if(value == null) {
                    unsetRecords();
                }
                else {
                    setRecords((java.util.List) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEY:
                return getKey();

            case RECORDS:
                return getRecords();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEY:
                return isSetKey();
            case RECORDS:
                return isSetRecords();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyRecords_args)
                return this.equals((navigateKeyRecords_args) that);
            return false;
        }

        public boolean equals(navigateKeyRecords_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_key = true && this.isSetKey();
            boolean that_present_key = true && that.isSetKey();
            if(this_present_key || that_present_key) {
                if(!(this_present_key && that_present_key))
                    return false;
                if(!this.key.equals(that.key))
                    return false;
            }

            boolean this_present_records = true && this.isSetRecords();
            boolean that_present_records = true && that.isSetRecords();
            if(this_present_records || that_present_records) {
                if(!(this_present_records && that_present_records))
                    return false;
                if(!this.records.equals(that.records))
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKey()) ? 131071 : 524287);
            if(isSetKey())
                hashCode = hashCode * 8191 + key.hashCode();

            hashCode = hashCode * 8191 + ((isSetRecords()) ? 131071 : 524287);
            if(isSetRecords())
                hashCode = hashCode * 8191 + records.hashCode();

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyRecords_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKey())
                    .compareTo(other.isSetKey());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKey()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.key, other.key);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetRecords())
                    .compareTo(other.isSetRecords());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetRecords()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.records, other.records);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyRecords_args(");
            boolean first = true;

            sb.append("key:");
            if(this.key == null) {
                sb.append("null");
            }
            else {
                sb.append(this.key);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("records:");
            if(this.records == null) {
                sb.append("null");
            }
            else {
                sb.append(this.records);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyRecords_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecords_argsStandardScheme getScheme() {
                return new navigateKeyRecords_argsStandardScheme();
            }
        }

        private static class navigateKeyRecords_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyRecords_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEY
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.key = iprot.readString();
                            struct.setKeyIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // RECORDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list206 = iprot
                                        .readListBegin();
                                struct.records = new java.util.ArrayList(
                                        _list206.size);
                                long _elem207;
                                for (int _i208 = 0; _i208 < _list206.size; ++_i208) {
                                    _elem207 = iprot.readI64();
                                    struct.records.add(_elem207);
                                }
                                iprot.readListEnd();
                            }
                            struct.setRecordsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyRecords_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.key != null) {
                    oprot.writeFieldBegin(KEY_FIELD_DESC);
                    oprot.writeString(struct.key);
                    oprot.writeFieldEnd();
                }
                if(struct.records != null) {
                    oprot.writeFieldBegin(RECORDS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.I64,
                                        struct.records.size()));
                        for (long _iter209 : struct.records) {
                            oprot.writeI64(_iter209);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyRecords_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecords_argsTupleScheme getScheme() {
                return new navigateKeyRecords_argsTupleScheme();
            }
        }

        private static class navigateKeyRecords_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecords_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKey()) {
                    optionals.set(0);
                }
                if(struct.isSetRecords()) {
                    optionals.set(1);
                }
                if(struct.isSetCreds()) {
                    optionals.set(2);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(3);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetKey()) {
                    oprot.writeString(struct.key);
                }
                if(struct.isSetRecords()) {
                    {
                        oprot.writeI32(struct.records.size());
                        for (long _iter210 : struct.records) {
                            oprot.writeI64(_iter210);
                        }
                    }
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecords_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    struct.key = iprot.readString();
                    struct.setKeyIsSet(true);
                }
                if(incoming.get(1)) {
                    {
                        org.apache.thrift.protocol.TList _list211 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.I64,
                                iprot.readI32());
                        struct.records = new java.util.ArrayList(
                                _list211.size);
                        long _elem212;
                        for (int _i213 = 0; _i213 < _list211.size; ++_i213) {
                            _elem212 = iprot.readI64();
                            struct.records.add(_elem212);
                        }
                    }
                    struct.setRecordsIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyRecords_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyRecords_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyRecords_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyRecords_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.SetMetaData(
                                            org.apache.thrift.protocol.TType.SET,
                                            new org.apache.thrift.meta_data.StructMetaData(
                                                    org.apache.thrift.protocol.TType.STRUCT,
                                                    com.cinchapi.concourse.thrift.TObject.class)))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyRecords_result.class, metaDataMap);
        }

        public navigateKeyRecords_result() {}

        public navigateKeyRecords_result(
                java.util.Map> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.PermissionException ex3) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyRecords_result(navigateKeyRecords_result other) {
            if(other.isSetSuccess()) {
                java.util.Map> __this__success = new java.util.LinkedHashMap>(
                        other.success.size());
                for (java.util.Map.Entry> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Set other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Set __this__success_copy_value = new java.util.LinkedHashSet(
                            other_element_value.size());
                    for (com.cinchapi.concourse.thrift.TObject other_element_value_element : other_element_value) {
                        __this__success_copy_value
                                .add(new com.cinchapi.concourse.thrift.TObject(
                                        other_element_value_element));
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex3);
            }
        }

        public navigateKeyRecords_result deepCopy() {
            return new navigateKeyRecords_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Set val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map> getSuccess() {
            return this.success;
        }

        public navigateKeyRecords_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeyRecords_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeyRecords_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx3() {
            return this.ex3;
        }

        public navigateKeyRecords_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyRecords_result)
                return this.equals((navigateKeyRecords_result) that);
            return false;
        }

        public boolean equals(navigateKeyRecords_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyRecords_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyRecords_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyRecords_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecords_resultStandardScheme getScheme() {
                return new navigateKeyRecords_resultStandardScheme();
            }
        }

        private static class navigateKeyRecords_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyRecords_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map214 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>(
                                        2 * _map214.size);
                                long _key215;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val216;
                                for (int _i217 = 0; _i217 < _map214.size; ++_i217) {
                                    _key215 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TSet _set218 = iprot
                                                .readSetBegin();
                                        _val216 = new java.util.LinkedHashSet(
                                                2 * _set218.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem219;
                                        for (int _i220 = 0; _i220 < _set218.size; ++_i220) {
                                            _elem219 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem219.read(iprot);
                                            _val216.add(_elem219);
                                        }
                                        iprot.readSetEnd();
                                    }
                                    struct.success.put(_key215, _val216);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyRecords_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                struct.success.size()));
                        for (java.util.Map.Entry> _iter221 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter221.getKey());
                            {
                                oprot.writeSetBegin(
                                        new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                _iter221.getValue().size()));
                                for (com.cinchapi.concourse.thrift.TObject _iter222 : _iter221
                                        .getValue()) {
                                    _iter222.write(oprot);
                                }
                                oprot.writeSetEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyRecords_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecords_resultTupleScheme getScheme() {
                return new navigateKeyRecords_resultTupleScheme();
            }
        }

        private static class navigateKeyRecords_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecords_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                oprot.writeBitSet(optionals, 4);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry> _iter223 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter223.getKey());
                            {
                                oprot.writeI32(_iter223.getValue().size());
                                for (com.cinchapi.concourse.thrift.TObject _iter224 : _iter223
                                        .getValue()) {
                                    _iter224.write(oprot);
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecords_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(4);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map225 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>(
                                2 * _map225.size);
                        long _key226;
                        @org.apache.thrift.annotation.Nullable java.util.Set _val227;
                        for (int _i228 = 0; _i228 < _map225.size; ++_i228) {
                            _key226 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TSet _set229 = new org.apache.thrift.protocol.TSet(
                                        org.apache.thrift.protocol.TType.STRUCT,
                                        iprot.readI32());
                                _val227 = new java.util.LinkedHashSet(
                                        2 * _set229.size);
                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem230;
                                for (int _i231 = 0; _i231 < _set229.size; ++_i231) {
                                    _elem230 = new com.cinchapi.concourse.thrift.TObject();
                                    _elem230.read(iprot);
                                    _val227.add(_elem230);
                                }
                            }
                            struct.success.put(_key226, _val227);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyRecordsTime_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyRecordsTime_args");

        private static final org.apache.thrift.protocol.TField KEY_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "key", org.apache.thrift.protocol.TType.STRING, (short) 1);
        private static final org.apache.thrift.protocol.TField RECORDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "records", org.apache.thrift.protocol.TType.LIST, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.I64, (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyRecordsTime_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyRecordsTime_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.lang.String key; // required
        public @org.apache.thrift.annotation.Nullable java.util.List records; // required
        public long timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEY((short) 1, "key"),
            RECORDS((short) 2, "records"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEY
                    return KEY;
                case 2: // RECORDS
                    return RECORDS;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        private static final int __TIMESTAMP_ISSET_ID = 0;
        private byte __isset_bitfield = 0;
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEY,
                    new org.apache.thrift.meta_data.FieldMetaData("key",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.RECORDS,
                    new org.apache.thrift.meta_data.FieldMetaData("records",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64))));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.I64)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyRecordsTime_args.class, metaDataMap);
        }

        public navigateKeyRecordsTime_args() {}

        public navigateKeyRecordsTime_args(java.lang.String key,
                java.util.List records, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.key = key;
            this.records = records;
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyRecordsTime_args(navigateKeyRecordsTime_args other) {
            __isset_bitfield = other.__isset_bitfield;
            if(other.isSetKey()) {
                this.key = other.key;
            }
            if(other.isSetRecords()) {
                java.util.List __this__records = new java.util.ArrayList(
                        other.records);
                this.records = __this__records;
            }
            this.timestamp = other.timestamp;
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeyRecordsTime_args deepCopy() {
            return new navigateKeyRecordsTime_args(this);
        }

        @Override
        public void clear() {
            this.key = null;
            this.records = null;
            setTimestampIsSet(false);
            this.timestamp = 0;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getKey() {
            return this.key;
        }

        public navigateKeyRecordsTime_args setKey(
                @org.apache.thrift.annotation.Nullable java.lang.String key) {
            this.key = key;
            return this;
        }

        public void unsetKey() {
            this.key = null;
        }

        /**
         * Returns true if field key is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKey() {
            return this.key != null;
        }

        public void setKeyIsSet(boolean value) {
            if(!value) {
                this.key = null;
            }
        }

        public int getRecordsSize() {
            return (this.records == null) ? 0 : this.records.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getRecordsIterator() {
            return (this.records == null) ? null : this.records.iterator();
        }

        public void addToRecords(long elem) {
            if(this.records == null) {
                this.records = new java.util.ArrayList();
            }
            this.records.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getRecords() {
            return this.records;
        }

        public navigateKeyRecordsTime_args setRecords(
                @org.apache.thrift.annotation.Nullable java.util.List records) {
            this.records = records;
            return this;
        }

        public void unsetRecords() {
            this.records = null;
        }

        /**
         * Returns true if field records is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetRecords() {
            return this.records != null;
        }

        public void setRecordsIsSet(boolean value) {
            if(!value) {
                this.records = null;
            }
        }

        public long getTimestamp() {
            return this.timestamp;
        }

        public navigateKeyRecordsTime_args setTimestamp(long timestamp) {
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            return this;
        }

        public void unsetTimestamp() {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .clearBit(__isset_bitfield, __TIMESTAMP_ISSET_ID);
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield,
                    __TIMESTAMP_ISSET_ID);
        }

        public void setTimestampIsSet(boolean value) {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .setBit(__isset_bitfield, __TIMESTAMP_ISSET_ID, value);
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeyRecordsTime_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeyRecordsTime_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeyRecordsTime_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEY:
                if(value == null) {
                    unsetKey();
                }
                else {
                    setKey((java.lang.String) value);
                }
                break;

            case RECORDS:
                if(value == null) {
                    unsetRecords();
                }
                else {
                    setRecords((java.util.List) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.Long) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEY:
                return getKey();

            case RECORDS:
                return getRecords();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEY:
                return isSetKey();
            case RECORDS:
                return isSetRecords();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyRecordsTime_args)
                return this.equals((navigateKeyRecordsTime_args) that);
            return false;
        }

        public boolean equals(navigateKeyRecordsTime_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_key = true && this.isSetKey();
            boolean that_present_key = true && that.isSetKey();
            if(this_present_key || that_present_key) {
                if(!(this_present_key && that_present_key))
                    return false;
                if(!this.key.equals(that.key))
                    return false;
            }

            boolean this_present_records = true && this.isSetRecords();
            boolean that_present_records = true && that.isSetRecords();
            if(this_present_records || that_present_records) {
                if(!(this_present_records && that_present_records))
                    return false;
                if(!this.records.equals(that.records))
                    return false;
            }

            boolean this_present_timestamp = true;
            boolean that_present_timestamp = true;
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(this.timestamp != that.timestamp)
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKey()) ? 131071 : 524287);
            if(isSetKey())
                hashCode = hashCode * 8191 + key.hashCode();

            hashCode = hashCode * 8191 + ((isSetRecords()) ? 131071 : 524287);
            if(isSetRecords())
                hashCode = hashCode * 8191 + records.hashCode();

            hashCode = hashCode * 8191
                    + org.apache.thrift.TBaseHelper.hashCode(timestamp);

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyRecordsTime_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKey())
                    .compareTo(other.isSetKey());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKey()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.key, other.key);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetRecords())
                    .compareTo(other.isSetRecords());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetRecords()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.records, other.records);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyRecordsTime_args(");
            boolean first = true;

            sb.append("key:");
            if(this.key == null) {
                sb.append("null");
            }
            else {
                sb.append(this.key);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("records:");
            if(this.records == null) {
                sb.append("null");
            }
            else {
                sb.append(this.records);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            sb.append(this.timestamp);
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                // it doesn't seem like you should have to do this, but java
                // serialization is wacky, and doesn't call the default
                // constructor.
                __isset_bitfield = 0;
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyRecordsTime_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordsTime_argsStandardScheme getScheme() {
                return new navigateKeyRecordsTime_argsStandardScheme();
            }
        }

        private static class navigateKeyRecordsTime_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyRecordsTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEY
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.key = iprot.readString();
                            struct.setKeyIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // RECORDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list232 = iprot
                                        .readListBegin();
                                struct.records = new java.util.ArrayList(
                                        _list232.size);
                                long _elem233;
                                for (int _i234 = 0; _i234 < _list232.size; ++_i234) {
                                    _elem233 = iprot.readI64();
                                    struct.records.add(_elem233);
                                }
                                iprot.readListEnd();
                            }
                            struct.setRecordsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.I64) {
                            struct.timestamp = iprot.readI64();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyRecordsTime_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.key != null) {
                    oprot.writeFieldBegin(KEY_FIELD_DESC);
                    oprot.writeString(struct.key);
                    oprot.writeFieldEnd();
                }
                if(struct.records != null) {
                    oprot.writeFieldBegin(RECORDS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.I64,
                                        struct.records.size()));
                        for (long _iter235 : struct.records) {
                            oprot.writeI64(_iter235);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                oprot.writeI64(struct.timestamp);
                oprot.writeFieldEnd();
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyRecordsTime_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordsTime_argsTupleScheme getScheme() {
                return new navigateKeyRecordsTime_argsTupleScheme();
            }
        }

        private static class navigateKeyRecordsTime_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordsTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKey()) {
                    optionals.set(0);
                }
                if(struct.isSetRecords()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKey()) {
                    oprot.writeString(struct.key);
                }
                if(struct.isSetRecords()) {
                    {
                        oprot.writeI32(struct.records.size());
                        for (long _iter236 : struct.records) {
                            oprot.writeI64(_iter236);
                        }
                    }
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeI64(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordsTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    struct.key = iprot.readString();
                    struct.setKeyIsSet(true);
                }
                if(incoming.get(1)) {
                    {
                        org.apache.thrift.protocol.TList _list237 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.I64,
                                iprot.readI32());
                        struct.records = new java.util.ArrayList(
                                _list237.size);
                        long _elem238;
                        for (int _i239 = 0; _i239 < _list237.size; ++_i239) {
                            _elem238 = iprot.readI64();
                            struct.records.add(_elem238);
                        }
                    }
                    struct.setRecordsIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readI64();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyRecordsTime_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyRecordsTime_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyRecordsTime_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyRecordsTime_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.SetMetaData(
                                            org.apache.thrift.protocol.TType.SET,
                                            new org.apache.thrift.meta_data.StructMetaData(
                                                    org.apache.thrift.protocol.TType.STRUCT,
                                                    com.cinchapi.concourse.thrift.TObject.class)))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyRecordsTime_result.class, metaDataMap);
        }

        public navigateKeyRecordsTime_result() {}

        public navigateKeyRecordsTime_result(
                java.util.Map> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.PermissionException ex3) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyRecordsTime_result(
                navigateKeyRecordsTime_result other) {
            if(other.isSetSuccess()) {
                java.util.Map> __this__success = new java.util.LinkedHashMap>(
                        other.success.size());
                for (java.util.Map.Entry> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Set other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Set __this__success_copy_value = new java.util.LinkedHashSet(
                            other_element_value.size());
                    for (com.cinchapi.concourse.thrift.TObject other_element_value_element : other_element_value) {
                        __this__success_copy_value
                                .add(new com.cinchapi.concourse.thrift.TObject(
                                        other_element_value_element));
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex3);
            }
        }

        public navigateKeyRecordsTime_result deepCopy() {
            return new navigateKeyRecordsTime_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Set val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map> getSuccess() {
            return this.success;
        }

        public navigateKeyRecordsTime_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeyRecordsTime_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeyRecordsTime_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx3() {
            return this.ex3;
        }

        public navigateKeyRecordsTime_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyRecordsTime_result)
                return this.equals((navigateKeyRecordsTime_result) that);
            return false;
        }

        public boolean equals(navigateKeyRecordsTime_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyRecordsTime_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyRecordsTime_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyRecordsTime_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordsTime_resultStandardScheme getScheme() {
                return new navigateKeyRecordsTime_resultStandardScheme();
            }
        }

        private static class navigateKeyRecordsTime_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyRecordsTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map240 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>(
                                        2 * _map240.size);
                                long _key241;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val242;
                                for (int _i243 = 0; _i243 < _map240.size; ++_i243) {
                                    _key241 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TSet _set244 = iprot
                                                .readSetBegin();
                                        _val242 = new java.util.LinkedHashSet(
                                                2 * _set244.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem245;
                                        for (int _i246 = 0; _i246 < _set244.size; ++_i246) {
                                            _elem245 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem245.read(iprot);
                                            _val242.add(_elem245);
                                        }
                                        iprot.readSetEnd();
                                    }
                                    struct.success.put(_key241, _val242);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyRecordsTime_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                struct.success.size()));
                        for (java.util.Map.Entry> _iter247 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter247.getKey());
                            {
                                oprot.writeSetBegin(
                                        new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                _iter247.getValue().size()));
                                for (com.cinchapi.concourse.thrift.TObject _iter248 : _iter247
                                        .getValue()) {
                                    _iter248.write(oprot);
                                }
                                oprot.writeSetEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyRecordsTime_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordsTime_resultTupleScheme getScheme() {
                return new navigateKeyRecordsTime_resultTupleScheme();
            }
        }

        private static class navigateKeyRecordsTime_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordsTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                oprot.writeBitSet(optionals, 4);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry> _iter249 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter249.getKey());
                            {
                                oprot.writeI32(_iter249.getValue().size());
                                for (com.cinchapi.concourse.thrift.TObject _iter250 : _iter249
                                        .getValue()) {
                                    _iter250.write(oprot);
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordsTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(4);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map251 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>(
                                2 * _map251.size);
                        long _key252;
                        @org.apache.thrift.annotation.Nullable java.util.Set _val253;
                        for (int _i254 = 0; _i254 < _map251.size; ++_i254) {
                            _key252 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TSet _set255 = new org.apache.thrift.protocol.TSet(
                                        org.apache.thrift.protocol.TType.STRUCT,
                                        iprot.readI32());
                                _val253 = new java.util.LinkedHashSet(
                                        2 * _set255.size);
                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem256;
                                for (int _i257 = 0; _i257 < _set255.size; ++_i257) {
                                    _elem256 = new com.cinchapi.concourse.thrift.TObject();
                                    _elem256.read(iprot);
                                    _val253.add(_elem256);
                                }
                            }
                            struct.success.put(_key252, _val253);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyRecordsTimestr_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyRecordsTimestr_args");

        private static final org.apache.thrift.protocol.TField KEY_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "key", org.apache.thrift.protocol.TType.STRING, (short) 1);
        private static final org.apache.thrift.protocol.TField RECORDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "records", org.apache.thrift.protocol.TType.LIST, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.STRING,
                (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyRecordsTimestr_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyRecordsTimestr_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.lang.String key; // required
        public @org.apache.thrift.annotation.Nullable java.util.List records; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEY((short) 1, "key"),
            RECORDS((short) 2, "records"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEY
                    return KEY;
                case 2: // RECORDS
                    return RECORDS;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEY,
                    new org.apache.thrift.meta_data.FieldMetaData("key",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.RECORDS,
                    new org.apache.thrift.meta_data.FieldMetaData("records",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64))));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyRecordsTimestr_args.class, metaDataMap);
        }

        public navigateKeyRecordsTimestr_args() {}

        public navigateKeyRecordsTimestr_args(java.lang.String key,
                java.util.List records,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.key = key;
            this.records = records;
            this.timestamp = timestamp;
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyRecordsTimestr_args(
                navigateKeyRecordsTimestr_args other) {
            if(other.isSetKey()) {
                this.key = other.key;
            }
            if(other.isSetRecords()) {
                java.util.List __this__records = new java.util.ArrayList(
                        other.records);
                this.records = __this__records;
            }
            if(other.isSetTimestamp()) {
                this.timestamp = other.timestamp;
            }
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeyRecordsTimestr_args deepCopy() {
            return new navigateKeyRecordsTimestr_args(this);
        }

        @Override
        public void clear() {
            this.key = null;
            this.records = null;
            this.timestamp = null;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getKey() {
            return this.key;
        }

        public navigateKeyRecordsTimestr_args setKey(
                @org.apache.thrift.annotation.Nullable java.lang.String key) {
            this.key = key;
            return this;
        }

        public void unsetKey() {
            this.key = null;
        }

        /**
         * Returns true if field key is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKey() {
            return this.key != null;
        }

        public void setKeyIsSet(boolean value) {
            if(!value) {
                this.key = null;
            }
        }

        public int getRecordsSize() {
            return (this.records == null) ? 0 : this.records.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getRecordsIterator() {
            return (this.records == null) ? null : this.records.iterator();
        }

        public void addToRecords(long elem) {
            if(this.records == null) {
                this.records = new java.util.ArrayList();
            }
            this.records.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getRecords() {
            return this.records;
        }

        public navigateKeyRecordsTimestr_args setRecords(
                @org.apache.thrift.annotation.Nullable java.util.List records) {
            this.records = records;
            return this;
        }

        public void unsetRecords() {
            this.records = null;
        }

        /**
         * Returns true if field records is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetRecords() {
            return this.records != null;
        }

        public void setRecordsIsSet(boolean value) {
            if(!value) {
                this.records = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getTimestamp() {
            return this.timestamp;
        }

        public navigateKeyRecordsTimestr_args setTimestamp(
                @org.apache.thrift.annotation.Nullable java.lang.String timestamp) {
            this.timestamp = timestamp;
            return this;
        }

        public void unsetTimestamp() {
            this.timestamp = null;
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return this.timestamp != null;
        }

        public void setTimestampIsSet(boolean value) {
            if(!value) {
                this.timestamp = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeyRecordsTimestr_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeyRecordsTimestr_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeyRecordsTimestr_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEY:
                if(value == null) {
                    unsetKey();
                }
                else {
                    setKey((java.lang.String) value);
                }
                break;

            case RECORDS:
                if(value == null) {
                    unsetRecords();
                }
                else {
                    setRecords((java.util.List) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.String) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEY:
                return getKey();

            case RECORDS:
                return getRecords();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEY:
                return isSetKey();
            case RECORDS:
                return isSetRecords();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyRecordsTimestr_args)
                return this.equals((navigateKeyRecordsTimestr_args) that);
            return false;
        }

        public boolean equals(navigateKeyRecordsTimestr_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_key = true && this.isSetKey();
            boolean that_present_key = true && that.isSetKey();
            if(this_present_key || that_present_key) {
                if(!(this_present_key && that_present_key))
                    return false;
                if(!this.key.equals(that.key))
                    return false;
            }

            boolean this_present_records = true && this.isSetRecords();
            boolean that_present_records = true && that.isSetRecords();
            if(this_present_records || that_present_records) {
                if(!(this_present_records && that_present_records))
                    return false;
                if(!this.records.equals(that.records))
                    return false;
            }

            boolean this_present_timestamp = true && this.isSetTimestamp();
            boolean that_present_timestamp = true && that.isSetTimestamp();
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(!this.timestamp.equals(that.timestamp))
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKey()) ? 131071 : 524287);
            if(isSetKey())
                hashCode = hashCode * 8191 + key.hashCode();

            hashCode = hashCode * 8191 + ((isSetRecords()) ? 131071 : 524287);
            if(isSetRecords())
                hashCode = hashCode * 8191 + records.hashCode();

            hashCode = hashCode * 8191 + ((isSetTimestamp()) ? 131071 : 524287);
            if(isSetTimestamp())
                hashCode = hashCode * 8191 + timestamp.hashCode();

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyRecordsTimestr_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKey())
                    .compareTo(other.isSetKey());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKey()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.key, other.key);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetRecords())
                    .compareTo(other.isSetRecords());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetRecords()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.records, other.records);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyRecordsTimestr_args(");
            boolean first = true;

            sb.append("key:");
            if(this.key == null) {
                sb.append("null");
            }
            else {
                sb.append(this.key);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("records:");
            if(this.records == null) {
                sb.append("null");
            }
            else {
                sb.append(this.records);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            if(this.timestamp == null) {
                sb.append("null");
            }
            else {
                sb.append(this.timestamp);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyRecordsTimestr_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordsTimestr_argsStandardScheme getScheme() {
                return new navigateKeyRecordsTimestr_argsStandardScheme();
            }
        }

        private static class navigateKeyRecordsTimestr_argsStandardScheme
                extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyRecordsTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEY
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.key = iprot.readString();
                            struct.setKeyIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // RECORDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list258 = iprot
                                        .readListBegin();
                                struct.records = new java.util.ArrayList(
                                        _list258.size);
                                long _elem259;
                                for (int _i260 = 0; _i260 < _list258.size; ++_i260) {
                                    _elem259 = iprot.readI64();
                                    struct.records.add(_elem259);
                                }
                                iprot.readListEnd();
                            }
                            struct.setRecordsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.timestamp = iprot.readString();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyRecordsTimestr_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.key != null) {
                    oprot.writeFieldBegin(KEY_FIELD_DESC);
                    oprot.writeString(struct.key);
                    oprot.writeFieldEnd();
                }
                if(struct.records != null) {
                    oprot.writeFieldBegin(RECORDS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.I64,
                                        struct.records.size()));
                        for (long _iter261 : struct.records) {
                            oprot.writeI64(_iter261);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.timestamp != null) {
                    oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                    oprot.writeString(struct.timestamp);
                    oprot.writeFieldEnd();
                }
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyRecordsTimestr_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordsTimestr_argsTupleScheme getScheme() {
                return new navigateKeyRecordsTimestr_argsTupleScheme();
            }
        }

        private static class navigateKeyRecordsTimestr_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordsTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKey()) {
                    optionals.set(0);
                }
                if(struct.isSetRecords()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKey()) {
                    oprot.writeString(struct.key);
                }
                if(struct.isSetRecords()) {
                    {
                        oprot.writeI32(struct.records.size());
                        for (long _iter262 : struct.records) {
                            oprot.writeI64(_iter262);
                        }
                    }
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeString(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordsTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    struct.key = iprot.readString();
                    struct.setKeyIsSet(true);
                }
                if(incoming.get(1)) {
                    {
                        org.apache.thrift.protocol.TList _list263 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.I64,
                                iprot.readI32());
                        struct.records = new java.util.ArrayList(
                                _list263.size);
                        long _elem264;
                        for (int _i265 = 0; _i265 < _list263.size; ++_i265) {
                            _elem264 = iprot.readI64();
                            struct.records.add(_elem264);
                        }
                    }
                    struct.setRecordsIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readString();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyRecordsTimestr_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyRecordsTimestr_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyRecordsTimestr_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyRecordsTimestr_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.SetMetaData(
                                            org.apache.thrift.protocol.TType.SET,
                                            new org.apache.thrift.meta_data.StructMetaData(
                                                    org.apache.thrift.protocol.TType.STRUCT,
                                                    com.cinchapi.concourse.thrift.TObject.class)))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyRecordsTimestr_result.class, metaDataMap);
        }

        public navigateKeyRecordsTimestr_result() {}

        public navigateKeyRecordsTimestr_result(
                java.util.Map> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyRecordsTimestr_result(
                navigateKeyRecordsTimestr_result other) {
            if(other.isSetSuccess()) {
                java.util.Map> __this__success = new java.util.LinkedHashMap>(
                        other.success.size());
                for (java.util.Map.Entry> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Set other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Set __this__success_copy_value = new java.util.LinkedHashSet(
                            other_element_value.size());
                    for (com.cinchapi.concourse.thrift.TObject other_element_value_element : other_element_value) {
                        __this__success_copy_value
                                .add(new com.cinchapi.concourse.thrift.TObject(
                                        other_element_value_element));
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeyRecordsTimestr_result deepCopy() {
            return new navigateKeyRecordsTimestr_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Set val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map> getSuccess() {
            return this.success;
        }

        public navigateKeyRecordsTimestr_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeyRecordsTimestr_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeyRecordsTimestr_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeyRecordsTimestr_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeyRecordsTimestr_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyRecordsTimestr_result)
                return this.equals((navigateKeyRecordsTimestr_result) that);
            return false;
        }

        public boolean equals(navigateKeyRecordsTimestr_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyRecordsTimestr_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyRecordsTimestr_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyRecordsTimestr_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordsTimestr_resultStandardScheme getScheme() {
                return new navigateKeyRecordsTimestr_resultStandardScheme();
            }
        }

        private static class navigateKeyRecordsTimestr_resultStandardScheme
                extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyRecordsTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map266 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>(
                                        2 * _map266.size);
                                long _key267;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val268;
                                for (int _i269 = 0; _i269 < _map266.size; ++_i269) {
                                    _key267 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TSet _set270 = iprot
                                                .readSetBegin();
                                        _val268 = new java.util.LinkedHashSet(
                                                2 * _set270.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem271;
                                        for (int _i272 = 0; _i272 < _set270.size; ++_i272) {
                                            _elem271 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem271.read(iprot);
                                            _val268.add(_elem271);
                                        }
                                        iprot.readSetEnd();
                                    }
                                    struct.success.put(_key267, _val268);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyRecordsTimestr_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                struct.success.size()));
                        for (java.util.Map.Entry> _iter273 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter273.getKey());
                            {
                                oprot.writeSetBegin(
                                        new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                _iter273.getValue().size()));
                                for (com.cinchapi.concourse.thrift.TObject _iter274 : _iter273
                                        .getValue()) {
                                    _iter274.write(oprot);
                                }
                                oprot.writeSetEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyRecordsTimestr_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyRecordsTimestr_resultTupleScheme getScheme() {
                return new navigateKeyRecordsTimestr_resultTupleScheme();
            }
        }

        private static class navigateKeyRecordsTimestr_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordsTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry> _iter275 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter275.getKey());
                            {
                                oprot.writeI32(_iter275.getValue().size());
                                for (com.cinchapi.concourse.thrift.TObject _iter276 : _iter275
                                        .getValue()) {
                                    _iter276.write(oprot);
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyRecordsTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map277 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>(
                                2 * _map277.size);
                        long _key278;
                        @org.apache.thrift.annotation.Nullable java.util.Set _val279;
                        for (int _i280 = 0; _i280 < _map277.size; ++_i280) {
                            _key278 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TSet _set281 = new org.apache.thrift.protocol.TSet(
                                        org.apache.thrift.protocol.TType.STRUCT,
                                        iprot.readI32());
                                _val279 = new java.util.LinkedHashSet(
                                        2 * _set281.size);
                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem282;
                                for (int _i283 = 0; _i283 < _set281.size; ++_i283) {
                                    _elem282 = new com.cinchapi.concourse.thrift.TObject();
                                    _elem282.read(iprot);
                                    _val279.add(_elem282);
                                }
                            }
                            struct.success.put(_key278, _val279);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysRecordsTime_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysRecordsTime_args");

        private static final org.apache.thrift.protocol.TField KEYS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "keys", org.apache.thrift.protocol.TType.LIST, (short) 1);
        private static final org.apache.thrift.protocol.TField RECORDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "records", org.apache.thrift.protocol.TType.LIST, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.I64, (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysRecordsTime_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysRecordsTime_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.List keys; // required
        public @org.apache.thrift.annotation.Nullable java.util.List records; // required
        public long timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEYS((short) 1, "keys"),
            RECORDS((short) 2, "records"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEYS
                    return KEYS;
                case 2: // RECORDS
                    return RECORDS;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        private static final int __TIMESTAMP_ISSET_ID = 0;
        private byte __isset_bitfield = 0;
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEYS,
                    new org.apache.thrift.meta_data.FieldMetaData("keys",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.STRING))));
            tmpMap.put(_Fields.RECORDS,
                    new org.apache.thrift.meta_data.FieldMetaData("records",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64))));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.I64)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysRecordsTime_args.class, metaDataMap);
        }

        public navigateKeysRecordsTime_args() {}

        public navigateKeysRecordsTime_args(
                java.util.List keys,
                java.util.List records, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.keys = keys;
            this.records = records;
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysRecordsTime_args(
                navigateKeysRecordsTime_args other) {
            __isset_bitfield = other.__isset_bitfield;
            if(other.isSetKeys()) {
                java.util.List __this__keys = new java.util.ArrayList(
                        other.keys);
                this.keys = __this__keys;
            }
            if(other.isSetRecords()) {
                java.util.List __this__records = new java.util.ArrayList(
                        other.records);
                this.records = __this__records;
            }
            this.timestamp = other.timestamp;
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeysRecordsTime_args deepCopy() {
            return new navigateKeysRecordsTime_args(this);
        }

        @Override
        public void clear() {
            this.keys = null;
            this.records = null;
            setTimestampIsSet(false);
            this.timestamp = 0;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        public int getKeysSize() {
            return (this.keys == null) ? 0 : this.keys.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getKeysIterator() {
            return (this.keys == null) ? null : this.keys.iterator();
        }

        public void addToKeys(java.lang.String elem) {
            if(this.keys == null) {
                this.keys = new java.util.ArrayList();
            }
            this.keys.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getKeys() {
            return this.keys;
        }

        public navigateKeysRecordsTime_args setKeys(
                @org.apache.thrift.annotation.Nullable java.util.List keys) {
            this.keys = keys;
            return this;
        }

        public void unsetKeys() {
            this.keys = null;
        }

        /**
         * Returns true if field keys is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKeys() {
            return this.keys != null;
        }

        public void setKeysIsSet(boolean value) {
            if(!value) {
                this.keys = null;
            }
        }

        public int getRecordsSize() {
            return (this.records == null) ? 0 : this.records.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getRecordsIterator() {
            return (this.records == null) ? null : this.records.iterator();
        }

        public void addToRecords(long elem) {
            if(this.records == null) {
                this.records = new java.util.ArrayList();
            }
            this.records.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getRecords() {
            return this.records;
        }

        public navigateKeysRecordsTime_args setRecords(
                @org.apache.thrift.annotation.Nullable java.util.List records) {
            this.records = records;
            return this;
        }

        public void unsetRecords() {
            this.records = null;
        }

        /**
         * Returns true if field records is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetRecords() {
            return this.records != null;
        }

        public void setRecordsIsSet(boolean value) {
            if(!value) {
                this.records = null;
            }
        }

        public long getTimestamp() {
            return this.timestamp;
        }

        public navigateKeysRecordsTime_args setTimestamp(long timestamp) {
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            return this;
        }

        public void unsetTimestamp() {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .clearBit(__isset_bitfield, __TIMESTAMP_ISSET_ID);
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield,
                    __TIMESTAMP_ISSET_ID);
        }

        public void setTimestampIsSet(boolean value) {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .setBit(__isset_bitfield, __TIMESTAMP_ISSET_ID, value);
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeysRecordsTime_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeysRecordsTime_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeysRecordsTime_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEYS:
                if(value == null) {
                    unsetKeys();
                }
                else {
                    setKeys((java.util.List) value);
                }
                break;

            case RECORDS:
                if(value == null) {
                    unsetRecords();
                }
                else {
                    setRecords((java.util.List) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.Long) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEYS:
                return getKeys();

            case RECORDS:
                return getRecords();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEYS:
                return isSetKeys();
            case RECORDS:
                return isSetRecords();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysRecordsTime_args)
                return this.equals((navigateKeysRecordsTime_args) that);
            return false;
        }

        public boolean equals(navigateKeysRecordsTime_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_keys = true && this.isSetKeys();
            boolean that_present_keys = true && that.isSetKeys();
            if(this_present_keys || that_present_keys) {
                if(!(this_present_keys && that_present_keys))
                    return false;
                if(!this.keys.equals(that.keys))
                    return false;
            }

            boolean this_present_records = true && this.isSetRecords();
            boolean that_present_records = true && that.isSetRecords();
            if(this_present_records || that_present_records) {
                if(!(this_present_records && that_present_records))
                    return false;
                if(!this.records.equals(that.records))
                    return false;
            }

            boolean this_present_timestamp = true;
            boolean that_present_timestamp = true;
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(this.timestamp != that.timestamp)
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKeys()) ? 131071 : 524287);
            if(isSetKeys())
                hashCode = hashCode * 8191 + keys.hashCode();

            hashCode = hashCode * 8191 + ((isSetRecords()) ? 131071 : 524287);
            if(isSetRecords())
                hashCode = hashCode * 8191 + records.hashCode();

            hashCode = hashCode * 8191
                    + org.apache.thrift.TBaseHelper.hashCode(timestamp);

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysRecordsTime_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKeys())
                    .compareTo(other.isSetKeys());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKeys()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.keys, other.keys);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetRecords())
                    .compareTo(other.isSetRecords());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetRecords()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.records, other.records);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysRecordsTime_args(");
            boolean first = true;

            sb.append("keys:");
            if(this.keys == null) {
                sb.append("null");
            }
            else {
                sb.append(this.keys);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("records:");
            if(this.records == null) {
                sb.append("null");
            }
            else {
                sb.append(this.records);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            sb.append(this.timestamp);
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                // it doesn't seem like you should have to do this, but java
                // serialization is wacky, and doesn't call the default
                // constructor.
                __isset_bitfield = 0;
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysRecordsTime_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordsTime_argsStandardScheme getScheme() {
                return new navigateKeysRecordsTime_argsStandardScheme();
            }
        }

        private static class navigateKeysRecordsTime_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysRecordsTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEYS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list284 = iprot
                                        .readListBegin();
                                struct.keys = new java.util.ArrayList(
                                        _list284.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _elem285;
                                for (int _i286 = 0; _i286 < _list284.size; ++_i286) {
                                    _elem285 = iprot.readString();
                                    struct.keys.add(_elem285);
                                }
                                iprot.readListEnd();
                            }
                            struct.setKeysIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // RECORDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list287 = iprot
                                        .readListBegin();
                                struct.records = new java.util.ArrayList(
                                        _list287.size);
                                long _elem288;
                                for (int _i289 = 0; _i289 < _list287.size; ++_i289) {
                                    _elem288 = iprot.readI64();
                                    struct.records.add(_elem288);
                                }
                                iprot.readListEnd();
                            }
                            struct.setRecordsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.I64) {
                            struct.timestamp = iprot.readI64();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysRecordsTime_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.keys != null) {
                    oprot.writeFieldBegin(KEYS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.STRING,
                                        struct.keys.size()));
                        for (java.lang.String _iter290 : struct.keys) {
                            oprot.writeString(_iter290);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.records != null) {
                    oprot.writeFieldBegin(RECORDS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.I64,
                                        struct.records.size()));
                        for (long _iter291 : struct.records) {
                            oprot.writeI64(_iter291);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                oprot.writeI64(struct.timestamp);
                oprot.writeFieldEnd();
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysRecordsTime_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordsTime_argsTupleScheme getScheme() {
                return new navigateKeysRecordsTime_argsTupleScheme();
            }
        }

        private static class navigateKeysRecordsTime_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordsTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKeys()) {
                    optionals.set(0);
                }
                if(struct.isSetRecords()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKeys()) {
                    {
                        oprot.writeI32(struct.keys.size());
                        for (java.lang.String _iter292 : struct.keys) {
                            oprot.writeString(_iter292);
                        }
                    }
                }
                if(struct.isSetRecords()) {
                    {
                        oprot.writeI32(struct.records.size());
                        for (long _iter293 : struct.records) {
                            oprot.writeI64(_iter293);
                        }
                    }
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeI64(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordsTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TList _list294 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.STRING,
                                iprot.readI32());
                        struct.keys = new java.util.ArrayList(
                                _list294.size);
                        @org.apache.thrift.annotation.Nullable java.lang.String _elem295;
                        for (int _i296 = 0; _i296 < _list294.size; ++_i296) {
                            _elem295 = iprot.readString();
                            struct.keys.add(_elem295);
                        }
                    }
                    struct.setKeysIsSet(true);
                }
                if(incoming.get(1)) {
                    {
                        org.apache.thrift.protocol.TList _list297 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.I64,
                                iprot.readI32());
                        struct.records = new java.util.ArrayList(
                                _list297.size);
                        long _elem298;
                        for (int _i299 = 0; _i299 < _list297.size; ++_i299) {
                            _elem298 = iprot.readI64();
                            struct.records.add(_elem298);
                        }
                    }
                    struct.setRecordsIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readI64();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysRecordsTime_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysRecordsTime_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysRecordsTime_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysRecordsTime_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map>> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.MapMetaData(
                                            org.apache.thrift.protocol.TType.MAP,
                                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                                    org.apache.thrift.protocol.TType.STRING),
                                            new org.apache.thrift.meta_data.SetMetaData(
                                                    org.apache.thrift.protocol.TType.SET,
                                                    new org.apache.thrift.meta_data.StructMetaData(
                                                            org.apache.thrift.protocol.TType.STRUCT,
                                                            com.cinchapi.concourse.thrift.TObject.class))))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysRecordsTime_result.class, metaDataMap);
        }

        public navigateKeysRecordsTime_result() {}

        public navigateKeysRecordsTime_result(
                java.util.Map>> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.PermissionException ex3) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysRecordsTime_result(
                navigateKeysRecordsTime_result other) {
            if(other.isSetSuccess()) {
                java.util.Map>> __this__success = new java.util.LinkedHashMap>>(
                        other.success.size());
                for (java.util.Map.Entry>> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Map> other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Map> __this__success_copy_value = new java.util.LinkedHashMap>(
                            other_element_value.size());
                    for (java.util.Map.Entry> other_element_value_element : other_element_value
                            .entrySet()) {

                        java.lang.String other_element_value_element_key = other_element_value_element
                                .getKey();
                        java.util.Set other_element_value_element_value = other_element_value_element
                                .getValue();

                        java.lang.String __this__success_copy_value_copy_key = other_element_value_element_key;

                        java.util.Set __this__success_copy_value_copy_value = new java.util.LinkedHashSet(
                                other_element_value_element_value.size());
                        for (com.cinchapi.concourse.thrift.TObject other_element_value_element_value_element : other_element_value_element_value) {
                            __this__success_copy_value_copy_value
                                    .add(new com.cinchapi.concourse.thrift.TObject(
                                            other_element_value_element_value_element));
                        }

                        __this__success_copy_value.put(
                                __this__success_copy_value_copy_key,
                                __this__success_copy_value_copy_value);
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex3);
            }
        }

        public navigateKeysRecordsTime_result deepCopy() {
            return new navigateKeysRecordsTime_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Map> val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map>> getSuccess() {
            return this.success;
        }

        public navigateKeysRecordsTime_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map>> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeysRecordsTime_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeysRecordsTime_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx3() {
            return this.ex3;
        }

        public navigateKeysRecordsTime_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysRecordsTime_result)
                return this.equals((navigateKeysRecordsTime_result) that);
            return false;
        }

        public boolean equals(navigateKeysRecordsTime_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysRecordsTime_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysRecordsTime_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysRecordsTime_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordsTime_resultStandardScheme getScheme() {
                return new navigateKeysRecordsTime_resultStandardScheme();
            }
        }

        private static class navigateKeysRecordsTime_resultStandardScheme
                extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysRecordsTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map300 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>>(
                                        2 * _map300.size);
                                long _key301;
                                @org.apache.thrift.annotation.Nullable java.util.Map> _val302;
                                for (int _i303 = 0; _i303 < _map300.size; ++_i303) {
                                    _key301 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TMap _map304 = iprot
                                                .readMapBegin();
                                        _val302 = new java.util.LinkedHashMap>(
                                                2 * _map304.size);
                                        @org.apache.thrift.annotation.Nullable java.lang.String _key305;
                                        @org.apache.thrift.annotation.Nullable java.util.Set _val306;
                                        for (int _i307 = 0; _i307 < _map304.size; ++_i307) {
                                            _key305 = iprot.readString();
                                            {
                                                org.apache.thrift.protocol.TSet _set308 = iprot
                                                        .readSetBegin();
                                                _val306 = new java.util.LinkedHashSet(
                                                        2 * _set308.size);
                                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem309;
                                                for (int _i310 = 0; _i310 < _set308.size; ++_i310) {
                                                    _elem309 = new com.cinchapi.concourse.thrift.TObject();
                                                    _elem309.read(iprot);
                                                    _val306.add(_elem309);
                                                }
                                                iprot.readSetEnd();
                                            }
                                            _val302.put(_key305, _val306);
                                        }
                                        iprot.readMapEnd();
                                    }
                                    struct.success.put(_key301, _val302);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysRecordsTime_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                struct.success.size()));
                        for (java.util.Map.Entry>> _iter311 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter311.getKey());
                            {
                                oprot.writeMapBegin(
                                        new org.apache.thrift.protocol.TMap(
                                                org.apache.thrift.protocol.TType.STRING,
                                                org.apache.thrift.protocol.TType.SET,
                                                _iter311.getValue().size()));
                                for (java.util.Map.Entry> _iter312 : _iter311
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter312.getKey());
                                    {
                                        oprot.writeSetBegin(
                                                new org.apache.thrift.protocol.TSet(
                                                        org.apache.thrift.protocol.TType.STRUCT,
                                                        _iter312.getValue()
                                                                .size()));
                                        for (com.cinchapi.concourse.thrift.TObject _iter313 : _iter312
                                                .getValue()) {
                                            _iter313.write(oprot);
                                        }
                                        oprot.writeSetEnd();
                                    }
                                }
                                oprot.writeMapEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysRecordsTime_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordsTime_resultTupleScheme getScheme() {
                return new navigateKeysRecordsTime_resultTupleScheme();
            }
        }

        private static class navigateKeysRecordsTime_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordsTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                oprot.writeBitSet(optionals, 4);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry>> _iter314 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter314.getKey());
                            {
                                oprot.writeI32(_iter314.getValue().size());
                                for (java.util.Map.Entry> _iter315 : _iter314
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter315.getKey());
                                    {
                                        oprot.writeI32(
                                                _iter315.getValue().size());
                                        for (com.cinchapi.concourse.thrift.TObject _iter316 : _iter315
                                                .getValue()) {
                                            _iter316.write(oprot);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordsTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(4);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map317 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>>(
                                2 * _map317.size);
                        long _key318;
                        @org.apache.thrift.annotation.Nullable java.util.Map> _val319;
                        for (int _i320 = 0; _i320 < _map317.size; ++_i320) {
                            _key318 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TMap _map321 = new org.apache.thrift.protocol.TMap(
                                        org.apache.thrift.protocol.TType.STRING,
                                        org.apache.thrift.protocol.TType.SET,
                                        iprot.readI32());
                                _val319 = new java.util.LinkedHashMap>(
                                        2 * _map321.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _key322;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val323;
                                for (int _i324 = 0; _i324 < _map321.size; ++_i324) {
                                    _key322 = iprot.readString();
                                    {
                                        org.apache.thrift.protocol.TSet _set325 = new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                iprot.readI32());
                                        _val323 = new java.util.LinkedHashSet(
                                                2 * _set325.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem326;
                                        for (int _i327 = 0; _i327 < _set325.size; ++_i327) {
                                            _elem326 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem326.read(iprot);
                                            _val323.add(_elem326);
                                        }
                                    }
                                    _val319.put(_key322, _val323);
                                }
                            }
                            struct.success.put(_key318, _val319);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysRecordsTimestr_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysRecordsTimestr_args");

        private static final org.apache.thrift.protocol.TField KEYS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "keys", org.apache.thrift.protocol.TType.LIST, (short) 1);
        private static final org.apache.thrift.protocol.TField RECORDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "records", org.apache.thrift.protocol.TType.LIST, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.STRING,
                (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysRecordsTimestr_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysRecordsTimestr_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.List keys; // required
        public @org.apache.thrift.annotation.Nullable java.util.List records; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEYS((short) 1, "keys"),
            RECORDS((short) 2, "records"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEYS
                    return KEYS;
                case 2: // RECORDS
                    return RECORDS;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEYS,
                    new org.apache.thrift.meta_data.FieldMetaData("keys",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.STRING))));
            tmpMap.put(_Fields.RECORDS,
                    new org.apache.thrift.meta_data.FieldMetaData("records",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64))));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysRecordsTimestr_args.class, metaDataMap);
        }

        public navigateKeysRecordsTimestr_args() {}

        public navigateKeysRecordsTimestr_args(
                java.util.List keys,
                java.util.List records,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.keys = keys;
            this.records = records;
            this.timestamp = timestamp;
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysRecordsTimestr_args(
                navigateKeysRecordsTimestr_args other) {
            if(other.isSetKeys()) {
                java.util.List __this__keys = new java.util.ArrayList(
                        other.keys);
                this.keys = __this__keys;
            }
            if(other.isSetRecords()) {
                java.util.List __this__records = new java.util.ArrayList(
                        other.records);
                this.records = __this__records;
            }
            if(other.isSetTimestamp()) {
                this.timestamp = other.timestamp;
            }
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeysRecordsTimestr_args deepCopy() {
            return new navigateKeysRecordsTimestr_args(this);
        }

        @Override
        public void clear() {
            this.keys = null;
            this.records = null;
            this.timestamp = null;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        public int getKeysSize() {
            return (this.keys == null) ? 0 : this.keys.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getKeysIterator() {
            return (this.keys == null) ? null : this.keys.iterator();
        }

        public void addToKeys(java.lang.String elem) {
            if(this.keys == null) {
                this.keys = new java.util.ArrayList();
            }
            this.keys.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getKeys() {
            return this.keys;
        }

        public navigateKeysRecordsTimestr_args setKeys(
                @org.apache.thrift.annotation.Nullable java.util.List keys) {
            this.keys = keys;
            return this;
        }

        public void unsetKeys() {
            this.keys = null;
        }

        /**
         * Returns true if field keys is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKeys() {
            return this.keys != null;
        }

        public void setKeysIsSet(boolean value) {
            if(!value) {
                this.keys = null;
            }
        }

        public int getRecordsSize() {
            return (this.records == null) ? 0 : this.records.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getRecordsIterator() {
            return (this.records == null) ? null : this.records.iterator();
        }

        public void addToRecords(long elem) {
            if(this.records == null) {
                this.records = new java.util.ArrayList();
            }
            this.records.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getRecords() {
            return this.records;
        }

        public navigateKeysRecordsTimestr_args setRecords(
                @org.apache.thrift.annotation.Nullable java.util.List records) {
            this.records = records;
            return this;
        }

        public void unsetRecords() {
            this.records = null;
        }

        /**
         * Returns true if field records is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetRecords() {
            return this.records != null;
        }

        public void setRecordsIsSet(boolean value) {
            if(!value) {
                this.records = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getTimestamp() {
            return this.timestamp;
        }

        public navigateKeysRecordsTimestr_args setTimestamp(
                @org.apache.thrift.annotation.Nullable java.lang.String timestamp) {
            this.timestamp = timestamp;
            return this;
        }

        public void unsetTimestamp() {
            this.timestamp = null;
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return this.timestamp != null;
        }

        public void setTimestampIsSet(boolean value) {
            if(!value) {
                this.timestamp = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeysRecordsTimestr_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeysRecordsTimestr_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeysRecordsTimestr_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEYS:
                if(value == null) {
                    unsetKeys();
                }
                else {
                    setKeys((java.util.List) value);
                }
                break;

            case RECORDS:
                if(value == null) {
                    unsetRecords();
                }
                else {
                    setRecords((java.util.List) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.String) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEYS:
                return getKeys();

            case RECORDS:
                return getRecords();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEYS:
                return isSetKeys();
            case RECORDS:
                return isSetRecords();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysRecordsTimestr_args)
                return this.equals((navigateKeysRecordsTimestr_args) that);
            return false;
        }

        public boolean equals(navigateKeysRecordsTimestr_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_keys = true && this.isSetKeys();
            boolean that_present_keys = true && that.isSetKeys();
            if(this_present_keys || that_present_keys) {
                if(!(this_present_keys && that_present_keys))
                    return false;
                if(!this.keys.equals(that.keys))
                    return false;
            }

            boolean this_present_records = true && this.isSetRecords();
            boolean that_present_records = true && that.isSetRecords();
            if(this_present_records || that_present_records) {
                if(!(this_present_records && that_present_records))
                    return false;
                if(!this.records.equals(that.records))
                    return false;
            }

            boolean this_present_timestamp = true && this.isSetTimestamp();
            boolean that_present_timestamp = true && that.isSetTimestamp();
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(!this.timestamp.equals(that.timestamp))
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKeys()) ? 131071 : 524287);
            if(isSetKeys())
                hashCode = hashCode * 8191 + keys.hashCode();

            hashCode = hashCode * 8191 + ((isSetRecords()) ? 131071 : 524287);
            if(isSetRecords())
                hashCode = hashCode * 8191 + records.hashCode();

            hashCode = hashCode * 8191 + ((isSetTimestamp()) ? 131071 : 524287);
            if(isSetTimestamp())
                hashCode = hashCode * 8191 + timestamp.hashCode();

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysRecordsTimestr_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKeys())
                    .compareTo(other.isSetKeys());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKeys()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.keys, other.keys);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetRecords())
                    .compareTo(other.isSetRecords());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetRecords()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.records, other.records);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysRecordsTimestr_args(");
            boolean first = true;

            sb.append("keys:");
            if(this.keys == null) {
                sb.append("null");
            }
            else {
                sb.append(this.keys);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("records:");
            if(this.records == null) {
                sb.append("null");
            }
            else {
                sb.append(this.records);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            if(this.timestamp == null) {
                sb.append("null");
            }
            else {
                sb.append(this.timestamp);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysRecordsTimestr_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordsTimestr_argsStandardScheme getScheme() {
                return new navigateKeysRecordsTimestr_argsStandardScheme();
            }
        }

        private static class navigateKeysRecordsTimestr_argsStandardScheme
                extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysRecordsTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEYS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list328 = iprot
                                        .readListBegin();
                                struct.keys = new java.util.ArrayList(
                                        _list328.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _elem329;
                                for (int _i330 = 0; _i330 < _list328.size; ++_i330) {
                                    _elem329 = iprot.readString();
                                    struct.keys.add(_elem329);
                                }
                                iprot.readListEnd();
                            }
                            struct.setKeysIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // RECORDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list331 = iprot
                                        .readListBegin();
                                struct.records = new java.util.ArrayList(
                                        _list331.size);
                                long _elem332;
                                for (int _i333 = 0; _i333 < _list331.size; ++_i333) {
                                    _elem332 = iprot.readI64();
                                    struct.records.add(_elem332);
                                }
                                iprot.readListEnd();
                            }
                            struct.setRecordsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.timestamp = iprot.readString();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysRecordsTimestr_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.keys != null) {
                    oprot.writeFieldBegin(KEYS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.STRING,
                                        struct.keys.size()));
                        for (java.lang.String _iter334 : struct.keys) {
                            oprot.writeString(_iter334);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.records != null) {
                    oprot.writeFieldBegin(RECORDS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.I64,
                                        struct.records.size()));
                        for (long _iter335 : struct.records) {
                            oprot.writeI64(_iter335);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.timestamp != null) {
                    oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                    oprot.writeString(struct.timestamp);
                    oprot.writeFieldEnd();
                }
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysRecordsTimestr_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordsTimestr_argsTupleScheme getScheme() {
                return new navigateKeysRecordsTimestr_argsTupleScheme();
            }
        }

        private static class navigateKeysRecordsTimestr_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordsTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKeys()) {
                    optionals.set(0);
                }
                if(struct.isSetRecords()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKeys()) {
                    {
                        oprot.writeI32(struct.keys.size());
                        for (java.lang.String _iter336 : struct.keys) {
                            oprot.writeString(_iter336);
                        }
                    }
                }
                if(struct.isSetRecords()) {
                    {
                        oprot.writeI32(struct.records.size());
                        for (long _iter337 : struct.records) {
                            oprot.writeI64(_iter337);
                        }
                    }
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeString(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordsTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TList _list338 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.STRING,
                                iprot.readI32());
                        struct.keys = new java.util.ArrayList(
                                _list338.size);
                        @org.apache.thrift.annotation.Nullable java.lang.String _elem339;
                        for (int _i340 = 0; _i340 < _list338.size; ++_i340) {
                            _elem339 = iprot.readString();
                            struct.keys.add(_elem339);
                        }
                    }
                    struct.setKeysIsSet(true);
                }
                if(incoming.get(1)) {
                    {
                        org.apache.thrift.protocol.TList _list341 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.I64,
                                iprot.readI32());
                        struct.records = new java.util.ArrayList(
                                _list341.size);
                        long _elem342;
                        for (int _i343 = 0; _i343 < _list341.size; ++_i343) {
                            _elem342 = iprot.readI64();
                            struct.records.add(_elem342);
                        }
                    }
                    struct.setRecordsIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readString();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysRecordsTimestr_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysRecordsTimestr_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysRecordsTimestr_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysRecordsTimestr_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map>> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.MapMetaData(
                                            org.apache.thrift.protocol.TType.MAP,
                                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                                    org.apache.thrift.protocol.TType.STRING),
                                            new org.apache.thrift.meta_data.SetMetaData(
                                                    org.apache.thrift.protocol.TType.SET,
                                                    new org.apache.thrift.meta_data.StructMetaData(
                                                            org.apache.thrift.protocol.TType.STRUCT,
                                                            com.cinchapi.concourse.thrift.TObject.class))))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysRecordsTimestr_result.class, metaDataMap);
        }

        public navigateKeysRecordsTimestr_result() {}

        public navigateKeysRecordsTimestr_result(
                java.util.Map>> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysRecordsTimestr_result(
                navigateKeysRecordsTimestr_result other) {
            if(other.isSetSuccess()) {
                java.util.Map>> __this__success = new java.util.LinkedHashMap>>(
                        other.success.size());
                for (java.util.Map.Entry>> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Map> other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Map> __this__success_copy_value = new java.util.LinkedHashMap>(
                            other_element_value.size());
                    for (java.util.Map.Entry> other_element_value_element : other_element_value
                            .entrySet()) {

                        java.lang.String other_element_value_element_key = other_element_value_element
                                .getKey();
                        java.util.Set other_element_value_element_value = other_element_value_element
                                .getValue();

                        java.lang.String __this__success_copy_value_copy_key = other_element_value_element_key;

                        java.util.Set __this__success_copy_value_copy_value = new java.util.LinkedHashSet(
                                other_element_value_element_value.size());
                        for (com.cinchapi.concourse.thrift.TObject other_element_value_element_value_element : other_element_value_element_value) {
                            __this__success_copy_value_copy_value
                                    .add(new com.cinchapi.concourse.thrift.TObject(
                                            other_element_value_element_value_element));
                        }

                        __this__success_copy_value.put(
                                __this__success_copy_value_copy_key,
                                __this__success_copy_value_copy_value);
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeysRecordsTimestr_result deepCopy() {
            return new navigateKeysRecordsTimestr_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Map> val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map>> getSuccess() {
            return this.success;
        }

        public navigateKeysRecordsTimestr_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map>> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeysRecordsTimestr_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeysRecordsTimestr_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeysRecordsTimestr_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeysRecordsTimestr_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysRecordsTimestr_result)
                return this.equals((navigateKeysRecordsTimestr_result) that);
            return false;
        }

        public boolean equals(navigateKeysRecordsTimestr_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysRecordsTimestr_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysRecordsTimestr_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysRecordsTimestr_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordsTimestr_resultStandardScheme getScheme() {
                return new navigateKeysRecordsTimestr_resultStandardScheme();
            }
        }

        private static class navigateKeysRecordsTimestr_resultStandardScheme
                extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysRecordsTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map344 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>>(
                                        2 * _map344.size);
                                long _key345;
                                @org.apache.thrift.annotation.Nullable java.util.Map> _val346;
                                for (int _i347 = 0; _i347 < _map344.size; ++_i347) {
                                    _key345 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TMap _map348 = iprot
                                                .readMapBegin();
                                        _val346 = new java.util.LinkedHashMap>(
                                                2 * _map348.size);
                                        @org.apache.thrift.annotation.Nullable java.lang.String _key349;
                                        @org.apache.thrift.annotation.Nullable java.util.Set _val350;
                                        for (int _i351 = 0; _i351 < _map348.size; ++_i351) {
                                            _key349 = iprot.readString();
                                            {
                                                org.apache.thrift.protocol.TSet _set352 = iprot
                                                        .readSetBegin();
                                                _val350 = new java.util.LinkedHashSet(
                                                        2 * _set352.size);
                                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem353;
                                                for (int _i354 = 0; _i354 < _set352.size; ++_i354) {
                                                    _elem353 = new com.cinchapi.concourse.thrift.TObject();
                                                    _elem353.read(iprot);
                                                    _val350.add(_elem353);
                                                }
                                                iprot.readSetEnd();
                                            }
                                            _val346.put(_key349, _val350);
                                        }
                                        iprot.readMapEnd();
                                    }
                                    struct.success.put(_key345, _val346);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysRecordsTimestr_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                struct.success.size()));
                        for (java.util.Map.Entry>> _iter355 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter355.getKey());
                            {
                                oprot.writeMapBegin(
                                        new org.apache.thrift.protocol.TMap(
                                                org.apache.thrift.protocol.TType.STRING,
                                                org.apache.thrift.protocol.TType.SET,
                                                _iter355.getValue().size()));
                                for (java.util.Map.Entry> _iter356 : _iter355
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter356.getKey());
                                    {
                                        oprot.writeSetBegin(
                                                new org.apache.thrift.protocol.TSet(
                                                        org.apache.thrift.protocol.TType.STRUCT,
                                                        _iter356.getValue()
                                                                .size()));
                                        for (com.cinchapi.concourse.thrift.TObject _iter357 : _iter356
                                                .getValue()) {
                                            _iter357.write(oprot);
                                        }
                                        oprot.writeSetEnd();
                                    }
                                }
                                oprot.writeMapEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysRecordsTimestr_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysRecordsTimestr_resultTupleScheme getScheme() {
                return new navigateKeysRecordsTimestr_resultTupleScheme();
            }
        }

        private static class navigateKeysRecordsTimestr_resultTupleScheme
                extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordsTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry>> _iter358 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter358.getKey());
                            {
                                oprot.writeI32(_iter358.getValue().size());
                                for (java.util.Map.Entry> _iter359 : _iter358
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter359.getKey());
                                    {
                                        oprot.writeI32(
                                                _iter359.getValue().size());
                                        for (com.cinchapi.concourse.thrift.TObject _iter360 : _iter359
                                                .getValue()) {
                                            _iter360.write(oprot);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysRecordsTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map361 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>>(
                                2 * _map361.size);
                        long _key362;
                        @org.apache.thrift.annotation.Nullable java.util.Map> _val363;
                        for (int _i364 = 0; _i364 < _map361.size; ++_i364) {
                            _key362 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TMap _map365 = new org.apache.thrift.protocol.TMap(
                                        org.apache.thrift.protocol.TType.STRING,
                                        org.apache.thrift.protocol.TType.SET,
                                        iprot.readI32());
                                _val363 = new java.util.LinkedHashMap>(
                                        2 * _map365.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _key366;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val367;
                                for (int _i368 = 0; _i368 < _map365.size; ++_i368) {
                                    _key366 = iprot.readString();
                                    {
                                        org.apache.thrift.protocol.TSet _set369 = new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                iprot.readI32());
                                        _val367 = new java.util.LinkedHashSet(
                                                2 * _set369.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem370;
                                        for (int _i371 = 0; _i371 < _set369.size; ++_i371) {
                                            _elem370 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem370.read(iprot);
                                            _val367.add(_elem370);
                                        }
                                    }
                                    _val363.put(_key366, _val367);
                                }
                            }
                            struct.success.put(_key362, _val363);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyCcl_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyCcl_args");

        private static final org.apache.thrift.protocol.TField KEY_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "key", org.apache.thrift.protocol.TType.STRING, (short) 1);
        private static final org.apache.thrift.protocol.TField CCL_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ccl", org.apache.thrift.protocol.TType.STRING, (short) 2);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 4);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 5);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyCcl_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyCcl_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.lang.String key; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String ccl; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEY((short) 1, "key"),
            CCL((short) 2, "ccl"),
            CREDS((short) 3, "creds"),
            TRANSACTION((short) 4, "transaction"),
            ENVIRONMENT((short) 5, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEY
                    return KEY;
                case 2: // CCL
                    return CCL;
                case 3: // CREDS
                    return CREDS;
                case 4: // TRANSACTION
                    return TRANSACTION;
                case 5: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEY,
                    new org.apache.thrift.meta_data.FieldMetaData("key",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CCL,
                    new org.apache.thrift.meta_data.FieldMetaData("ccl",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyCcl_args.class, metaDataMap);
        }

        public navigateKeyCcl_args() {}

        public navigateKeyCcl_args(java.lang.String key, java.lang.String ccl,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.key = key;
            this.ccl = ccl;
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyCcl_args(navigateKeyCcl_args other) {
            if(other.isSetKey()) {
                this.key = other.key;
            }
            if(other.isSetCcl()) {
                this.ccl = other.ccl;
            }
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeyCcl_args deepCopy() {
            return new navigateKeyCcl_args(this);
        }

        @Override
        public void clear() {
            this.key = null;
            this.ccl = null;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getKey() {
            return this.key;
        }

        public navigateKeyCcl_args setKey(
                @org.apache.thrift.annotation.Nullable java.lang.String key) {
            this.key = key;
            return this;
        }

        public void unsetKey() {
            this.key = null;
        }

        /**
         * Returns true if field key is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKey() {
            return this.key != null;
        }

        public void setKeyIsSet(boolean value) {
            if(!value) {
                this.key = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getCcl() {
            return this.ccl;
        }

        public navigateKeyCcl_args setCcl(
                @org.apache.thrift.annotation.Nullable java.lang.String ccl) {
            this.ccl = ccl;
            return this;
        }

        public void unsetCcl() {
            this.ccl = null;
        }

        /**
         * Returns true if field ccl is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCcl() {
            return this.ccl != null;
        }

        public void setCclIsSet(boolean value) {
            if(!value) {
                this.ccl = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeyCcl_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeyCcl_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeyCcl_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEY:
                if(value == null) {
                    unsetKey();
                }
                else {
                    setKey((java.lang.String) value);
                }
                break;

            case CCL:
                if(value == null) {
                    unsetCcl();
                }
                else {
                    setCcl((java.lang.String) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEY:
                return getKey();

            case CCL:
                return getCcl();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEY:
                return isSetKey();
            case CCL:
                return isSetCcl();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyCcl_args)
                return this.equals((navigateKeyCcl_args) that);
            return false;
        }

        public boolean equals(navigateKeyCcl_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_key = true && this.isSetKey();
            boolean that_present_key = true && that.isSetKey();
            if(this_present_key || that_present_key) {
                if(!(this_present_key && that_present_key))
                    return false;
                if(!this.key.equals(that.key))
                    return false;
            }

            boolean this_present_ccl = true && this.isSetCcl();
            boolean that_present_ccl = true && that.isSetCcl();
            if(this_present_ccl || that_present_ccl) {
                if(!(this_present_ccl && that_present_ccl))
                    return false;
                if(!this.ccl.equals(that.ccl))
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKey()) ? 131071 : 524287);
            if(isSetKey())
                hashCode = hashCode * 8191 + key.hashCode();

            hashCode = hashCode * 8191 + ((isSetCcl()) ? 131071 : 524287);
            if(isSetCcl())
                hashCode = hashCode * 8191 + ccl.hashCode();

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyCcl_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKey())
                    .compareTo(other.isSetKey());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKey()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.key, other.key);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCcl())
                    .compareTo(other.isSetCcl());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCcl()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ccl, other.ccl);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyCcl_args(");
            boolean first = true;

            sb.append("key:");
            if(this.key == null) {
                sb.append("null");
            }
            else {
                sb.append(this.key);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ccl:");
            if(this.ccl == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ccl);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyCcl_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCcl_argsStandardScheme getScheme() {
                return new navigateKeyCcl_argsStandardScheme();
            }
        }

        private static class navigateKeyCcl_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyCcl_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEY
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.key = iprot.readString();
                            struct.setKeyIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // CCL
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.ccl = iprot.readString();
                            struct.setCclIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyCcl_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.key != null) {
                    oprot.writeFieldBegin(KEY_FIELD_DESC);
                    oprot.writeString(struct.key);
                    oprot.writeFieldEnd();
                }
                if(struct.ccl != null) {
                    oprot.writeFieldBegin(CCL_FIELD_DESC);
                    oprot.writeString(struct.ccl);
                    oprot.writeFieldEnd();
                }
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyCcl_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCcl_argsTupleScheme getScheme() {
                return new navigateKeyCcl_argsTupleScheme();
            }
        }

        private static class navigateKeyCcl_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCcl_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKey()) {
                    optionals.set(0);
                }
                if(struct.isSetCcl()) {
                    optionals.set(1);
                }
                if(struct.isSetCreds()) {
                    optionals.set(2);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(3);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetKey()) {
                    oprot.writeString(struct.key);
                }
                if(struct.isSetCcl()) {
                    oprot.writeString(struct.ccl);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCcl_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    struct.key = iprot.readString();
                    struct.setKeyIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ccl = iprot.readString();
                    struct.setCclIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyCcl_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyCcl_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyCcl_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyCcl_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.SetMetaData(
                                            org.apache.thrift.protocol.TType.SET,
                                            new org.apache.thrift.meta_data.StructMetaData(
                                                    org.apache.thrift.protocol.TType.STRUCT,
                                                    com.cinchapi.concourse.thrift.TObject.class)))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyCcl_result.class, metaDataMap);
        }

        public navigateKeyCcl_result() {}

        public navigateKeyCcl_result(
                java.util.Map> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyCcl_result(navigateKeyCcl_result other) {
            if(other.isSetSuccess()) {
                java.util.Map> __this__success = new java.util.LinkedHashMap>(
                        other.success.size());
                for (java.util.Map.Entry> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Set other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Set __this__success_copy_value = new java.util.LinkedHashSet(
                            other_element_value.size());
                    for (com.cinchapi.concourse.thrift.TObject other_element_value_element : other_element_value) {
                        __this__success_copy_value
                                .add(new com.cinchapi.concourse.thrift.TObject(
                                        other_element_value_element));
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeyCcl_result deepCopy() {
            return new navigateKeyCcl_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Set val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map> getSuccess() {
            return this.success;
        }

        public navigateKeyCcl_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeyCcl_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeyCcl_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeyCcl_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeyCcl_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyCcl_result)
                return this.equals((navigateKeyCcl_result) that);
            return false;
        }

        public boolean equals(navigateKeyCcl_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyCcl_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyCcl_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyCcl_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCcl_resultStandardScheme getScheme() {
                return new navigateKeyCcl_resultStandardScheme();
            }
        }

        private static class navigateKeyCcl_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyCcl_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map372 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>(
                                        2 * _map372.size);
                                long _key373;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val374;
                                for (int _i375 = 0; _i375 < _map372.size; ++_i375) {
                                    _key373 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TSet _set376 = iprot
                                                .readSetBegin();
                                        _val374 = new java.util.LinkedHashSet(
                                                2 * _set376.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem377;
                                        for (int _i378 = 0; _i378 < _set376.size; ++_i378) {
                                            _elem377 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem377.read(iprot);
                                            _val374.add(_elem377);
                                        }
                                        iprot.readSetEnd();
                                    }
                                    struct.success.put(_key373, _val374);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyCcl_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                struct.success.size()));
                        for (java.util.Map.Entry> _iter379 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter379.getKey());
                            {
                                oprot.writeSetBegin(
                                        new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                _iter379.getValue().size()));
                                for (com.cinchapi.concourse.thrift.TObject _iter380 : _iter379
                                        .getValue()) {
                                    _iter380.write(oprot);
                                }
                                oprot.writeSetEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyCcl_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCcl_resultTupleScheme getScheme() {
                return new navigateKeyCcl_resultTupleScheme();
            }
        }

        private static class navigateKeyCcl_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCcl_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry> _iter381 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter381.getKey());
                            {
                                oprot.writeI32(_iter381.getValue().size());
                                for (com.cinchapi.concourse.thrift.TObject _iter382 : _iter381
                                        .getValue()) {
                                    _iter382.write(oprot);
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCcl_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map383 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>(
                                2 * _map383.size);
                        long _key384;
                        @org.apache.thrift.annotation.Nullable java.util.Set _val385;
                        for (int _i386 = 0; _i386 < _map383.size; ++_i386) {
                            _key384 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TSet _set387 = new org.apache.thrift.protocol.TSet(
                                        org.apache.thrift.protocol.TType.STRUCT,
                                        iprot.readI32());
                                _val385 = new java.util.LinkedHashSet(
                                        2 * _set387.size);
                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem388;
                                for (int _i389 = 0; _i389 < _set387.size; ++_i389) {
                                    _elem388 = new com.cinchapi.concourse.thrift.TObject();
                                    _elem388.read(iprot);
                                    _val385.add(_elem388);
                                }
                            }
                            struct.success.put(_key384, _val385);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyCclTime_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyCclTime_args");

        private static final org.apache.thrift.protocol.TField KEY_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "key", org.apache.thrift.protocol.TType.STRING, (short) 1);
        private static final org.apache.thrift.protocol.TField CCL_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ccl", org.apache.thrift.protocol.TType.STRING, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.I64, (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyCclTime_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyCclTime_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.lang.String key; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String ccl; // required
        public long timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEY((short) 1, "key"),
            CCL((short) 2, "ccl"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEY
                    return KEY;
                case 2: // CCL
                    return CCL;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        private static final int __TIMESTAMP_ISSET_ID = 0;
        private byte __isset_bitfield = 0;
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEY,
                    new org.apache.thrift.meta_data.FieldMetaData("key",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CCL,
                    new org.apache.thrift.meta_data.FieldMetaData("ccl",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.I64)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyCclTime_args.class, metaDataMap);
        }

        public navigateKeyCclTime_args() {}

        public navigateKeyCclTime_args(java.lang.String key,
                java.lang.String ccl, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.key = key;
            this.ccl = ccl;
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyCclTime_args(navigateKeyCclTime_args other) {
            __isset_bitfield = other.__isset_bitfield;
            if(other.isSetKey()) {
                this.key = other.key;
            }
            if(other.isSetCcl()) {
                this.ccl = other.ccl;
            }
            this.timestamp = other.timestamp;
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeyCclTime_args deepCopy() {
            return new navigateKeyCclTime_args(this);
        }

        @Override
        public void clear() {
            this.key = null;
            this.ccl = null;
            setTimestampIsSet(false);
            this.timestamp = 0;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getKey() {
            return this.key;
        }

        public navigateKeyCclTime_args setKey(
                @org.apache.thrift.annotation.Nullable java.lang.String key) {
            this.key = key;
            return this;
        }

        public void unsetKey() {
            this.key = null;
        }

        /**
         * Returns true if field key is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKey() {
            return this.key != null;
        }

        public void setKeyIsSet(boolean value) {
            if(!value) {
                this.key = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getCcl() {
            return this.ccl;
        }

        public navigateKeyCclTime_args setCcl(
                @org.apache.thrift.annotation.Nullable java.lang.String ccl) {
            this.ccl = ccl;
            return this;
        }

        public void unsetCcl() {
            this.ccl = null;
        }

        /**
         * Returns true if field ccl is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCcl() {
            return this.ccl != null;
        }

        public void setCclIsSet(boolean value) {
            if(!value) {
                this.ccl = null;
            }
        }

        public long getTimestamp() {
            return this.timestamp;
        }

        public navigateKeyCclTime_args setTimestamp(long timestamp) {
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            return this;
        }

        public void unsetTimestamp() {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .clearBit(__isset_bitfield, __TIMESTAMP_ISSET_ID);
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield,
                    __TIMESTAMP_ISSET_ID);
        }

        public void setTimestampIsSet(boolean value) {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .setBit(__isset_bitfield, __TIMESTAMP_ISSET_ID, value);
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeyCclTime_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeyCclTime_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeyCclTime_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEY:
                if(value == null) {
                    unsetKey();
                }
                else {
                    setKey((java.lang.String) value);
                }
                break;

            case CCL:
                if(value == null) {
                    unsetCcl();
                }
                else {
                    setCcl((java.lang.String) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.Long) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEY:
                return getKey();

            case CCL:
                return getCcl();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEY:
                return isSetKey();
            case CCL:
                return isSetCcl();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyCclTime_args)
                return this.equals((navigateKeyCclTime_args) that);
            return false;
        }

        public boolean equals(navigateKeyCclTime_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_key = true && this.isSetKey();
            boolean that_present_key = true && that.isSetKey();
            if(this_present_key || that_present_key) {
                if(!(this_present_key && that_present_key))
                    return false;
                if(!this.key.equals(that.key))
                    return false;
            }

            boolean this_present_ccl = true && this.isSetCcl();
            boolean that_present_ccl = true && that.isSetCcl();
            if(this_present_ccl || that_present_ccl) {
                if(!(this_present_ccl && that_present_ccl))
                    return false;
                if(!this.ccl.equals(that.ccl))
                    return false;
            }

            boolean this_present_timestamp = true;
            boolean that_present_timestamp = true;
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(this.timestamp != that.timestamp)
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKey()) ? 131071 : 524287);
            if(isSetKey())
                hashCode = hashCode * 8191 + key.hashCode();

            hashCode = hashCode * 8191 + ((isSetCcl()) ? 131071 : 524287);
            if(isSetCcl())
                hashCode = hashCode * 8191 + ccl.hashCode();

            hashCode = hashCode * 8191
                    + org.apache.thrift.TBaseHelper.hashCode(timestamp);

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyCclTime_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKey())
                    .compareTo(other.isSetKey());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKey()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.key, other.key);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCcl())
                    .compareTo(other.isSetCcl());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCcl()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ccl, other.ccl);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyCclTime_args(");
            boolean first = true;

            sb.append("key:");
            if(this.key == null) {
                sb.append("null");
            }
            else {
                sb.append(this.key);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ccl:");
            if(this.ccl == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ccl);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            sb.append(this.timestamp);
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                // it doesn't seem like you should have to do this, but java
                // serialization is wacky, and doesn't call the default
                // constructor.
                __isset_bitfield = 0;
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyCclTime_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCclTime_argsStandardScheme getScheme() {
                return new navigateKeyCclTime_argsStandardScheme();
            }
        }

        private static class navigateKeyCclTime_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyCclTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEY
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.key = iprot.readString();
                            struct.setKeyIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // CCL
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.ccl = iprot.readString();
                            struct.setCclIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.I64) {
                            struct.timestamp = iprot.readI64();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyCclTime_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.key != null) {
                    oprot.writeFieldBegin(KEY_FIELD_DESC);
                    oprot.writeString(struct.key);
                    oprot.writeFieldEnd();
                }
                if(struct.ccl != null) {
                    oprot.writeFieldBegin(CCL_FIELD_DESC);
                    oprot.writeString(struct.ccl);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                oprot.writeI64(struct.timestamp);
                oprot.writeFieldEnd();
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyCclTime_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCclTime_argsTupleScheme getScheme() {
                return new navigateKeyCclTime_argsTupleScheme();
            }
        }

        private static class navigateKeyCclTime_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCclTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKey()) {
                    optionals.set(0);
                }
                if(struct.isSetCcl()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKey()) {
                    oprot.writeString(struct.key);
                }
                if(struct.isSetCcl()) {
                    oprot.writeString(struct.ccl);
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeI64(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCclTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    struct.key = iprot.readString();
                    struct.setKeyIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ccl = iprot.readString();
                    struct.setCclIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readI64();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyCclTime_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyCclTime_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyCclTime_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyCclTime_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.SetMetaData(
                                            org.apache.thrift.protocol.TType.SET,
                                            new org.apache.thrift.meta_data.StructMetaData(
                                                    org.apache.thrift.protocol.TType.STRUCT,
                                                    com.cinchapi.concourse.thrift.TObject.class)))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyCclTime_result.class, metaDataMap);
        }

        public navigateKeyCclTime_result() {}

        public navigateKeyCclTime_result(
                java.util.Map> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyCclTime_result(navigateKeyCclTime_result other) {
            if(other.isSetSuccess()) {
                java.util.Map> __this__success = new java.util.LinkedHashMap>(
                        other.success.size());
                for (java.util.Map.Entry> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Set other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Set __this__success_copy_value = new java.util.LinkedHashSet(
                            other_element_value.size());
                    for (com.cinchapi.concourse.thrift.TObject other_element_value_element : other_element_value) {
                        __this__success_copy_value
                                .add(new com.cinchapi.concourse.thrift.TObject(
                                        other_element_value_element));
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeyCclTime_result deepCopy() {
            return new navigateKeyCclTime_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Set val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map> getSuccess() {
            return this.success;
        }

        public navigateKeyCclTime_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeyCclTime_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeyCclTime_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeyCclTime_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeyCclTime_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyCclTime_result)
                return this.equals((navigateKeyCclTime_result) that);
            return false;
        }

        public boolean equals(navigateKeyCclTime_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyCclTime_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyCclTime_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyCclTime_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCclTime_resultStandardScheme getScheme() {
                return new navigateKeyCclTime_resultStandardScheme();
            }
        }

        private static class navigateKeyCclTime_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyCclTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map390 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>(
                                        2 * _map390.size);
                                long _key391;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val392;
                                for (int _i393 = 0; _i393 < _map390.size; ++_i393) {
                                    _key391 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TSet _set394 = iprot
                                                .readSetBegin();
                                        _val392 = new java.util.LinkedHashSet(
                                                2 * _set394.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem395;
                                        for (int _i396 = 0; _i396 < _set394.size; ++_i396) {
                                            _elem395 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem395.read(iprot);
                                            _val392.add(_elem395);
                                        }
                                        iprot.readSetEnd();
                                    }
                                    struct.success.put(_key391, _val392);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyCclTime_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                struct.success.size()));
                        for (java.util.Map.Entry> _iter397 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter397.getKey());
                            {
                                oprot.writeSetBegin(
                                        new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                _iter397.getValue().size()));
                                for (com.cinchapi.concourse.thrift.TObject _iter398 : _iter397
                                        .getValue()) {
                                    _iter398.write(oprot);
                                }
                                oprot.writeSetEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyCclTime_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCclTime_resultTupleScheme getScheme() {
                return new navigateKeyCclTime_resultTupleScheme();
            }
        }

        private static class navigateKeyCclTime_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCclTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry> _iter399 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter399.getKey());
                            {
                                oprot.writeI32(_iter399.getValue().size());
                                for (com.cinchapi.concourse.thrift.TObject _iter400 : _iter399
                                        .getValue()) {
                                    _iter400.write(oprot);
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCclTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map401 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>(
                                2 * _map401.size);
                        long _key402;
                        @org.apache.thrift.annotation.Nullable java.util.Set _val403;
                        for (int _i404 = 0; _i404 < _map401.size; ++_i404) {
                            _key402 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TSet _set405 = new org.apache.thrift.protocol.TSet(
                                        org.apache.thrift.protocol.TType.STRUCT,
                                        iprot.readI32());
                                _val403 = new java.util.LinkedHashSet(
                                        2 * _set405.size);
                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem406;
                                for (int _i407 = 0; _i407 < _set405.size; ++_i407) {
                                    _elem406 = new com.cinchapi.concourse.thrift.TObject();
                                    _elem406.read(iprot);
                                    _val403.add(_elem406);
                                }
                            }
                            struct.success.put(_key402, _val403);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyCclTimestr_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyCclTimestr_args");

        private static final org.apache.thrift.protocol.TField KEY_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "key", org.apache.thrift.protocol.TType.STRING, (short) 1);
        private static final org.apache.thrift.protocol.TField CCL_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ccl", org.apache.thrift.protocol.TType.STRING, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.STRING,
                (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyCclTimestr_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyCclTimestr_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.lang.String key; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String ccl; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEY((short) 1, "key"),
            CCL((short) 2, "ccl"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEY
                    return KEY;
                case 2: // CCL
                    return CCL;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEY,
                    new org.apache.thrift.meta_data.FieldMetaData("key",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CCL,
                    new org.apache.thrift.meta_data.FieldMetaData("ccl",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyCclTimestr_args.class, metaDataMap);
        }

        public navigateKeyCclTimestr_args() {}

        public navigateKeyCclTimestr_args(java.lang.String key,
                java.lang.String ccl, java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.key = key;
            this.ccl = ccl;
            this.timestamp = timestamp;
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyCclTimestr_args(navigateKeyCclTimestr_args other) {
            if(other.isSetKey()) {
                this.key = other.key;
            }
            if(other.isSetCcl()) {
                this.ccl = other.ccl;
            }
            if(other.isSetTimestamp()) {
                this.timestamp = other.timestamp;
            }
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeyCclTimestr_args deepCopy() {
            return new navigateKeyCclTimestr_args(this);
        }

        @Override
        public void clear() {
            this.key = null;
            this.ccl = null;
            this.timestamp = null;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getKey() {
            return this.key;
        }

        public navigateKeyCclTimestr_args setKey(
                @org.apache.thrift.annotation.Nullable java.lang.String key) {
            this.key = key;
            return this;
        }

        public void unsetKey() {
            this.key = null;
        }

        /**
         * Returns true if field key is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKey() {
            return this.key != null;
        }

        public void setKeyIsSet(boolean value) {
            if(!value) {
                this.key = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getCcl() {
            return this.ccl;
        }

        public navigateKeyCclTimestr_args setCcl(
                @org.apache.thrift.annotation.Nullable java.lang.String ccl) {
            this.ccl = ccl;
            return this;
        }

        public void unsetCcl() {
            this.ccl = null;
        }

        /**
         * Returns true if field ccl is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCcl() {
            return this.ccl != null;
        }

        public void setCclIsSet(boolean value) {
            if(!value) {
                this.ccl = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getTimestamp() {
            return this.timestamp;
        }

        public navigateKeyCclTimestr_args setTimestamp(
                @org.apache.thrift.annotation.Nullable java.lang.String timestamp) {
            this.timestamp = timestamp;
            return this;
        }

        public void unsetTimestamp() {
            this.timestamp = null;
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return this.timestamp != null;
        }

        public void setTimestampIsSet(boolean value) {
            if(!value) {
                this.timestamp = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeyCclTimestr_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeyCclTimestr_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeyCclTimestr_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEY:
                if(value == null) {
                    unsetKey();
                }
                else {
                    setKey((java.lang.String) value);
                }
                break;

            case CCL:
                if(value == null) {
                    unsetCcl();
                }
                else {
                    setCcl((java.lang.String) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.String) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEY:
                return getKey();

            case CCL:
                return getCcl();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEY:
                return isSetKey();
            case CCL:
                return isSetCcl();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyCclTimestr_args)
                return this.equals((navigateKeyCclTimestr_args) that);
            return false;
        }

        public boolean equals(navigateKeyCclTimestr_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_key = true && this.isSetKey();
            boolean that_present_key = true && that.isSetKey();
            if(this_present_key || that_present_key) {
                if(!(this_present_key && that_present_key))
                    return false;
                if(!this.key.equals(that.key))
                    return false;
            }

            boolean this_present_ccl = true && this.isSetCcl();
            boolean that_present_ccl = true && that.isSetCcl();
            if(this_present_ccl || that_present_ccl) {
                if(!(this_present_ccl && that_present_ccl))
                    return false;
                if(!this.ccl.equals(that.ccl))
                    return false;
            }

            boolean this_present_timestamp = true && this.isSetTimestamp();
            boolean that_present_timestamp = true && that.isSetTimestamp();
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(!this.timestamp.equals(that.timestamp))
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKey()) ? 131071 : 524287);
            if(isSetKey())
                hashCode = hashCode * 8191 + key.hashCode();

            hashCode = hashCode * 8191 + ((isSetCcl()) ? 131071 : 524287);
            if(isSetCcl())
                hashCode = hashCode * 8191 + ccl.hashCode();

            hashCode = hashCode * 8191 + ((isSetTimestamp()) ? 131071 : 524287);
            if(isSetTimestamp())
                hashCode = hashCode * 8191 + timestamp.hashCode();

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyCclTimestr_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKey())
                    .compareTo(other.isSetKey());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKey()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.key, other.key);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCcl())
                    .compareTo(other.isSetCcl());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCcl()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ccl, other.ccl);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyCclTimestr_args(");
            boolean first = true;

            sb.append("key:");
            if(this.key == null) {
                sb.append("null");
            }
            else {
                sb.append(this.key);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ccl:");
            if(this.ccl == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ccl);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            if(this.timestamp == null) {
                sb.append("null");
            }
            else {
                sb.append(this.timestamp);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyCclTimestr_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCclTimestr_argsStandardScheme getScheme() {
                return new navigateKeyCclTimestr_argsStandardScheme();
            }
        }

        private static class navigateKeyCclTimestr_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyCclTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEY
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.key = iprot.readString();
                            struct.setKeyIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // CCL
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.ccl = iprot.readString();
                            struct.setCclIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.timestamp = iprot.readString();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyCclTimestr_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.key != null) {
                    oprot.writeFieldBegin(KEY_FIELD_DESC);
                    oprot.writeString(struct.key);
                    oprot.writeFieldEnd();
                }
                if(struct.ccl != null) {
                    oprot.writeFieldBegin(CCL_FIELD_DESC);
                    oprot.writeString(struct.ccl);
                    oprot.writeFieldEnd();
                }
                if(struct.timestamp != null) {
                    oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                    oprot.writeString(struct.timestamp);
                    oprot.writeFieldEnd();
                }
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyCclTimestr_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCclTimestr_argsTupleScheme getScheme() {
                return new navigateKeyCclTimestr_argsTupleScheme();
            }
        }

        private static class navigateKeyCclTimestr_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCclTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKey()) {
                    optionals.set(0);
                }
                if(struct.isSetCcl()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKey()) {
                    oprot.writeString(struct.key);
                }
                if(struct.isSetCcl()) {
                    oprot.writeString(struct.ccl);
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeString(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCclTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    struct.key = iprot.readString();
                    struct.setKeyIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ccl = iprot.readString();
                    struct.setCclIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readString();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyCclTimestr_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyCclTimestr_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyCclTimestr_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyCclTimestr_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.SetMetaData(
                                            org.apache.thrift.protocol.TType.SET,
                                            new org.apache.thrift.meta_data.StructMetaData(
                                                    org.apache.thrift.protocol.TType.STRUCT,
                                                    com.cinchapi.concourse.thrift.TObject.class)))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyCclTimestr_result.class, metaDataMap);
        }

        public navigateKeyCclTimestr_result() {}

        public navigateKeyCclTimestr_result(
                java.util.Map> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyCclTimestr_result(
                navigateKeyCclTimestr_result other) {
            if(other.isSetSuccess()) {
                java.util.Map> __this__success = new java.util.LinkedHashMap>(
                        other.success.size());
                for (java.util.Map.Entry> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Set other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Set __this__success_copy_value = new java.util.LinkedHashSet(
                            other_element_value.size());
                    for (com.cinchapi.concourse.thrift.TObject other_element_value_element : other_element_value) {
                        __this__success_copy_value
                                .add(new com.cinchapi.concourse.thrift.TObject(
                                        other_element_value_element));
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeyCclTimestr_result deepCopy() {
            return new navigateKeyCclTimestr_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Set val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map> getSuccess() {
            return this.success;
        }

        public navigateKeyCclTimestr_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeyCclTimestr_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeyCclTimestr_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeyCclTimestr_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeyCclTimestr_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyCclTimestr_result)
                return this.equals((navigateKeyCclTimestr_result) that);
            return false;
        }

        public boolean equals(navigateKeyCclTimestr_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyCclTimestr_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyCclTimestr_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyCclTimestr_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCclTimestr_resultStandardScheme getScheme() {
                return new navigateKeyCclTimestr_resultStandardScheme();
            }
        }

        private static class navigateKeyCclTimestr_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyCclTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map408 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>(
                                        2 * _map408.size);
                                long _key409;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val410;
                                for (int _i411 = 0; _i411 < _map408.size; ++_i411) {
                                    _key409 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TSet _set412 = iprot
                                                .readSetBegin();
                                        _val410 = new java.util.LinkedHashSet(
                                                2 * _set412.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem413;
                                        for (int _i414 = 0; _i414 < _set412.size; ++_i414) {
                                            _elem413 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem413.read(iprot);
                                            _val410.add(_elem413);
                                        }
                                        iprot.readSetEnd();
                                    }
                                    struct.success.put(_key409, _val410);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyCclTimestr_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                struct.success.size()));
                        for (java.util.Map.Entry> _iter415 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter415.getKey());
                            {
                                oprot.writeSetBegin(
                                        new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                _iter415.getValue().size()));
                                for (com.cinchapi.concourse.thrift.TObject _iter416 : _iter415
                                        .getValue()) {
                                    _iter416.write(oprot);
                                }
                                oprot.writeSetEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyCclTimestr_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCclTimestr_resultTupleScheme getScheme() {
                return new navigateKeyCclTimestr_resultTupleScheme();
            }
        }

        private static class navigateKeyCclTimestr_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCclTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry> _iter417 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter417.getKey());
                            {
                                oprot.writeI32(_iter417.getValue().size());
                                for (com.cinchapi.concourse.thrift.TObject _iter418 : _iter417
                                        .getValue()) {
                                    _iter418.write(oprot);
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCclTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map419 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>(
                                2 * _map419.size);
                        long _key420;
                        @org.apache.thrift.annotation.Nullable java.util.Set _val421;
                        for (int _i422 = 0; _i422 < _map419.size; ++_i422) {
                            _key420 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TSet _set423 = new org.apache.thrift.protocol.TSet(
                                        org.apache.thrift.protocol.TType.STRUCT,
                                        iprot.readI32());
                                _val421 = new java.util.LinkedHashSet(
                                        2 * _set423.size);
                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem424;
                                for (int _i425 = 0; _i425 < _set423.size; ++_i425) {
                                    _elem424 = new com.cinchapi.concourse.thrift.TObject();
                                    _elem424.read(iprot);
                                    _val421.add(_elem424);
                                }
                            }
                            struct.success.put(_key420, _val421);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysCcl_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysCcl_args");

        private static final org.apache.thrift.protocol.TField KEYS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "keys", org.apache.thrift.protocol.TType.LIST, (short) 1);
        private static final org.apache.thrift.protocol.TField CCL_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ccl", org.apache.thrift.protocol.TType.STRING, (short) 2);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 4);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 5);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysCcl_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysCcl_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.List keys; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String ccl; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEYS((short) 1, "keys"),
            CCL((short) 2, "ccl"),
            CREDS((short) 3, "creds"),
            TRANSACTION((short) 4, "transaction"),
            ENVIRONMENT((short) 5, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEYS
                    return KEYS;
                case 2: // CCL
                    return CCL;
                case 3: // CREDS
                    return CREDS;
                case 4: // TRANSACTION
                    return TRANSACTION;
                case 5: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEYS,
                    new org.apache.thrift.meta_data.FieldMetaData("keys",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.STRING))));
            tmpMap.put(_Fields.CCL,
                    new org.apache.thrift.meta_data.FieldMetaData("ccl",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysCcl_args.class, metaDataMap);
        }

        public navigateKeysCcl_args() {}

        public navigateKeysCcl_args(java.util.List keys,
                java.lang.String ccl,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.keys = keys;
            this.ccl = ccl;
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysCcl_args(navigateKeysCcl_args other) {
            if(other.isSetKeys()) {
                java.util.List __this__keys = new java.util.ArrayList(
                        other.keys);
                this.keys = __this__keys;
            }
            if(other.isSetCcl()) {
                this.ccl = other.ccl;
            }
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeysCcl_args deepCopy() {
            return new navigateKeysCcl_args(this);
        }

        @Override
        public void clear() {
            this.keys = null;
            this.ccl = null;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        public int getKeysSize() {
            return (this.keys == null) ? 0 : this.keys.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getKeysIterator() {
            return (this.keys == null) ? null : this.keys.iterator();
        }

        public void addToKeys(java.lang.String elem) {
            if(this.keys == null) {
                this.keys = new java.util.ArrayList();
            }
            this.keys.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getKeys() {
            return this.keys;
        }

        public navigateKeysCcl_args setKeys(
                @org.apache.thrift.annotation.Nullable java.util.List keys) {
            this.keys = keys;
            return this;
        }

        public void unsetKeys() {
            this.keys = null;
        }

        /**
         * Returns true if field keys is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKeys() {
            return this.keys != null;
        }

        public void setKeysIsSet(boolean value) {
            if(!value) {
                this.keys = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getCcl() {
            return this.ccl;
        }

        public navigateKeysCcl_args setCcl(
                @org.apache.thrift.annotation.Nullable java.lang.String ccl) {
            this.ccl = ccl;
            return this;
        }

        public void unsetCcl() {
            this.ccl = null;
        }

        /**
         * Returns true if field ccl is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCcl() {
            return this.ccl != null;
        }

        public void setCclIsSet(boolean value) {
            if(!value) {
                this.ccl = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeysCcl_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeysCcl_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeysCcl_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEYS:
                if(value == null) {
                    unsetKeys();
                }
                else {
                    setKeys((java.util.List) value);
                }
                break;

            case CCL:
                if(value == null) {
                    unsetCcl();
                }
                else {
                    setCcl((java.lang.String) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEYS:
                return getKeys();

            case CCL:
                return getCcl();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEYS:
                return isSetKeys();
            case CCL:
                return isSetCcl();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysCcl_args)
                return this.equals((navigateKeysCcl_args) that);
            return false;
        }

        public boolean equals(navigateKeysCcl_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_keys = true && this.isSetKeys();
            boolean that_present_keys = true && that.isSetKeys();
            if(this_present_keys || that_present_keys) {
                if(!(this_present_keys && that_present_keys))
                    return false;
                if(!this.keys.equals(that.keys))
                    return false;
            }

            boolean this_present_ccl = true && this.isSetCcl();
            boolean that_present_ccl = true && that.isSetCcl();
            if(this_present_ccl || that_present_ccl) {
                if(!(this_present_ccl && that_present_ccl))
                    return false;
                if(!this.ccl.equals(that.ccl))
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKeys()) ? 131071 : 524287);
            if(isSetKeys())
                hashCode = hashCode * 8191 + keys.hashCode();

            hashCode = hashCode * 8191 + ((isSetCcl()) ? 131071 : 524287);
            if(isSetCcl())
                hashCode = hashCode * 8191 + ccl.hashCode();

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysCcl_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKeys())
                    .compareTo(other.isSetKeys());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKeys()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.keys, other.keys);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCcl())
                    .compareTo(other.isSetCcl());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCcl()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ccl, other.ccl);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysCcl_args(");
            boolean first = true;

            sb.append("keys:");
            if(this.keys == null) {
                sb.append("null");
            }
            else {
                sb.append(this.keys);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ccl:");
            if(this.ccl == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ccl);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysCcl_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCcl_argsStandardScheme getScheme() {
                return new navigateKeysCcl_argsStandardScheme();
            }
        }

        private static class navigateKeysCcl_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysCcl_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEYS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list426 = iprot
                                        .readListBegin();
                                struct.keys = new java.util.ArrayList(
                                        _list426.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _elem427;
                                for (int _i428 = 0; _i428 < _list426.size; ++_i428) {
                                    _elem427 = iprot.readString();
                                    struct.keys.add(_elem427);
                                }
                                iprot.readListEnd();
                            }
                            struct.setKeysIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // CCL
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.ccl = iprot.readString();
                            struct.setCclIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysCcl_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.keys != null) {
                    oprot.writeFieldBegin(KEYS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.STRING,
                                        struct.keys.size()));
                        for (java.lang.String _iter429 : struct.keys) {
                            oprot.writeString(_iter429);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ccl != null) {
                    oprot.writeFieldBegin(CCL_FIELD_DESC);
                    oprot.writeString(struct.ccl);
                    oprot.writeFieldEnd();
                }
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysCcl_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCcl_argsTupleScheme getScheme() {
                return new navigateKeysCcl_argsTupleScheme();
            }
        }

        private static class navigateKeysCcl_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCcl_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKeys()) {
                    optionals.set(0);
                }
                if(struct.isSetCcl()) {
                    optionals.set(1);
                }
                if(struct.isSetCreds()) {
                    optionals.set(2);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(3);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetKeys()) {
                    {
                        oprot.writeI32(struct.keys.size());
                        for (java.lang.String _iter430 : struct.keys) {
                            oprot.writeString(_iter430);
                        }
                    }
                }
                if(struct.isSetCcl()) {
                    oprot.writeString(struct.ccl);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCcl_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TList _list431 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.STRING,
                                iprot.readI32());
                        struct.keys = new java.util.ArrayList(
                                _list431.size);
                        @org.apache.thrift.annotation.Nullable java.lang.String _elem432;
                        for (int _i433 = 0; _i433 < _list431.size; ++_i433) {
                            _elem432 = iprot.readString();
                            struct.keys.add(_elem432);
                        }
                    }
                    struct.setKeysIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ccl = iprot.readString();
                    struct.setCclIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysCcl_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysCcl_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysCcl_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysCcl_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map>> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.MapMetaData(
                                            org.apache.thrift.protocol.TType.MAP,
                                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                                    org.apache.thrift.protocol.TType.STRING),
                                            new org.apache.thrift.meta_data.SetMetaData(
                                                    org.apache.thrift.protocol.TType.SET,
                                                    new org.apache.thrift.meta_data.StructMetaData(
                                                            org.apache.thrift.protocol.TType.STRUCT,
                                                            com.cinchapi.concourse.thrift.TObject.class))))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysCcl_result.class, metaDataMap);
        }

        public navigateKeysCcl_result() {}

        public navigateKeysCcl_result(
                java.util.Map>> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysCcl_result(navigateKeysCcl_result other) {
            if(other.isSetSuccess()) {
                java.util.Map>> __this__success = new java.util.LinkedHashMap>>(
                        other.success.size());
                for (java.util.Map.Entry>> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Map> other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Map> __this__success_copy_value = new java.util.LinkedHashMap>(
                            other_element_value.size());
                    for (java.util.Map.Entry> other_element_value_element : other_element_value
                            .entrySet()) {

                        java.lang.String other_element_value_element_key = other_element_value_element
                                .getKey();
                        java.util.Set other_element_value_element_value = other_element_value_element
                                .getValue();

                        java.lang.String __this__success_copy_value_copy_key = other_element_value_element_key;

                        java.util.Set __this__success_copy_value_copy_value = new java.util.LinkedHashSet(
                                other_element_value_element_value.size());
                        for (com.cinchapi.concourse.thrift.TObject other_element_value_element_value_element : other_element_value_element_value) {
                            __this__success_copy_value_copy_value
                                    .add(new com.cinchapi.concourse.thrift.TObject(
                                            other_element_value_element_value_element));
                        }

                        __this__success_copy_value.put(
                                __this__success_copy_value_copy_key,
                                __this__success_copy_value_copy_value);
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeysCcl_result deepCopy() {
            return new navigateKeysCcl_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Map> val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map>> getSuccess() {
            return this.success;
        }

        public navigateKeysCcl_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map>> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeysCcl_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeysCcl_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeysCcl_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeysCcl_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysCcl_result)
                return this.equals((navigateKeysCcl_result) that);
            return false;
        }

        public boolean equals(navigateKeysCcl_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysCcl_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysCcl_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysCcl_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCcl_resultStandardScheme getScheme() {
                return new navigateKeysCcl_resultStandardScheme();
            }
        }

        private static class navigateKeysCcl_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysCcl_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map434 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>>(
                                        2 * _map434.size);
                                long _key435;
                                @org.apache.thrift.annotation.Nullable java.util.Map> _val436;
                                for (int _i437 = 0; _i437 < _map434.size; ++_i437) {
                                    _key435 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TMap _map438 = iprot
                                                .readMapBegin();
                                        _val436 = new java.util.LinkedHashMap>(
                                                2 * _map438.size);
                                        @org.apache.thrift.annotation.Nullable java.lang.String _key439;
                                        @org.apache.thrift.annotation.Nullable java.util.Set _val440;
                                        for (int _i441 = 0; _i441 < _map438.size; ++_i441) {
                                            _key439 = iprot.readString();
                                            {
                                                org.apache.thrift.protocol.TSet _set442 = iprot
                                                        .readSetBegin();
                                                _val440 = new java.util.LinkedHashSet(
                                                        2 * _set442.size);
                                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem443;
                                                for (int _i444 = 0; _i444 < _set442.size; ++_i444) {
                                                    _elem443 = new com.cinchapi.concourse.thrift.TObject();
                                                    _elem443.read(iprot);
                                                    _val440.add(_elem443);
                                                }
                                                iprot.readSetEnd();
                                            }
                                            _val436.put(_key439, _val440);
                                        }
                                        iprot.readMapEnd();
                                    }
                                    struct.success.put(_key435, _val436);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysCcl_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                struct.success.size()));
                        for (java.util.Map.Entry>> _iter445 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter445.getKey());
                            {
                                oprot.writeMapBegin(
                                        new org.apache.thrift.protocol.TMap(
                                                org.apache.thrift.protocol.TType.STRING,
                                                org.apache.thrift.protocol.TType.SET,
                                                _iter445.getValue().size()));
                                for (java.util.Map.Entry> _iter446 : _iter445
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter446.getKey());
                                    {
                                        oprot.writeSetBegin(
                                                new org.apache.thrift.protocol.TSet(
                                                        org.apache.thrift.protocol.TType.STRUCT,
                                                        _iter446.getValue()
                                                                .size()));
                                        for (com.cinchapi.concourse.thrift.TObject _iter447 : _iter446
                                                .getValue()) {
                                            _iter447.write(oprot);
                                        }
                                        oprot.writeSetEnd();
                                    }
                                }
                                oprot.writeMapEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysCcl_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCcl_resultTupleScheme getScheme() {
                return new navigateKeysCcl_resultTupleScheme();
            }
        }

        private static class navigateKeysCcl_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCcl_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry>> _iter448 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter448.getKey());
                            {
                                oprot.writeI32(_iter448.getValue().size());
                                for (java.util.Map.Entry> _iter449 : _iter448
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter449.getKey());
                                    {
                                        oprot.writeI32(
                                                _iter449.getValue().size());
                                        for (com.cinchapi.concourse.thrift.TObject _iter450 : _iter449
                                                .getValue()) {
                                            _iter450.write(oprot);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCcl_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map451 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>>(
                                2 * _map451.size);
                        long _key452;
                        @org.apache.thrift.annotation.Nullable java.util.Map> _val453;
                        for (int _i454 = 0; _i454 < _map451.size; ++_i454) {
                            _key452 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TMap _map455 = new org.apache.thrift.protocol.TMap(
                                        org.apache.thrift.protocol.TType.STRING,
                                        org.apache.thrift.protocol.TType.SET,
                                        iprot.readI32());
                                _val453 = new java.util.LinkedHashMap>(
                                        2 * _map455.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _key456;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val457;
                                for (int _i458 = 0; _i458 < _map455.size; ++_i458) {
                                    _key456 = iprot.readString();
                                    {
                                        org.apache.thrift.protocol.TSet _set459 = new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                iprot.readI32());
                                        _val457 = new java.util.LinkedHashSet(
                                                2 * _set459.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem460;
                                        for (int _i461 = 0; _i461 < _set459.size; ++_i461) {
                                            _elem460 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem460.read(iprot);
                                            _val457.add(_elem460);
                                        }
                                    }
                                    _val453.put(_key456, _val457);
                                }
                            }
                            struct.success.put(_key452, _val453);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysCclTime_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysCclTime_args");

        private static final org.apache.thrift.protocol.TField KEYS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "keys", org.apache.thrift.protocol.TType.LIST, (short) 1);
        private static final org.apache.thrift.protocol.TField CCL_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ccl", org.apache.thrift.protocol.TType.STRING, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.I64, (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysCclTime_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysCclTime_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.List keys; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String ccl; // required
        public long timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEYS((short) 1, "keys"),
            CCL((short) 2, "ccl"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEYS
                    return KEYS;
                case 2: // CCL
                    return CCL;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        private static final int __TIMESTAMP_ISSET_ID = 0;
        private byte __isset_bitfield = 0;
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEYS,
                    new org.apache.thrift.meta_data.FieldMetaData("keys",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.STRING))));
            tmpMap.put(_Fields.CCL,
                    new org.apache.thrift.meta_data.FieldMetaData("ccl",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.I64)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysCclTime_args.class, metaDataMap);
        }

        public navigateKeysCclTime_args() {}

        public navigateKeysCclTime_args(java.util.List keys,
                java.lang.String ccl, long timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.keys = keys;
            this.ccl = ccl;
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysCclTime_args(navigateKeysCclTime_args other) {
            __isset_bitfield = other.__isset_bitfield;
            if(other.isSetKeys()) {
                java.util.List __this__keys = new java.util.ArrayList(
                        other.keys);
                this.keys = __this__keys;
            }
            if(other.isSetCcl()) {
                this.ccl = other.ccl;
            }
            this.timestamp = other.timestamp;
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeysCclTime_args deepCopy() {
            return new navigateKeysCclTime_args(this);
        }

        @Override
        public void clear() {
            this.keys = null;
            this.ccl = null;
            setTimestampIsSet(false);
            this.timestamp = 0;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        public int getKeysSize() {
            return (this.keys == null) ? 0 : this.keys.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getKeysIterator() {
            return (this.keys == null) ? null : this.keys.iterator();
        }

        public void addToKeys(java.lang.String elem) {
            if(this.keys == null) {
                this.keys = new java.util.ArrayList();
            }
            this.keys.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getKeys() {
            return this.keys;
        }

        public navigateKeysCclTime_args setKeys(
                @org.apache.thrift.annotation.Nullable java.util.List keys) {
            this.keys = keys;
            return this;
        }

        public void unsetKeys() {
            this.keys = null;
        }

        /**
         * Returns true if field keys is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKeys() {
            return this.keys != null;
        }

        public void setKeysIsSet(boolean value) {
            if(!value) {
                this.keys = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getCcl() {
            return this.ccl;
        }

        public navigateKeysCclTime_args setCcl(
                @org.apache.thrift.annotation.Nullable java.lang.String ccl) {
            this.ccl = ccl;
            return this;
        }

        public void unsetCcl() {
            this.ccl = null;
        }

        /**
         * Returns true if field ccl is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCcl() {
            return this.ccl != null;
        }

        public void setCclIsSet(boolean value) {
            if(!value) {
                this.ccl = null;
            }
        }

        public long getTimestamp() {
            return this.timestamp;
        }

        public navigateKeysCclTime_args setTimestamp(long timestamp) {
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            return this;
        }

        public void unsetTimestamp() {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .clearBit(__isset_bitfield, __TIMESTAMP_ISSET_ID);
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield,
                    __TIMESTAMP_ISSET_ID);
        }

        public void setTimestampIsSet(boolean value) {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .setBit(__isset_bitfield, __TIMESTAMP_ISSET_ID, value);
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeysCclTime_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeysCclTime_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeysCclTime_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEYS:
                if(value == null) {
                    unsetKeys();
                }
                else {
                    setKeys((java.util.List) value);
                }
                break;

            case CCL:
                if(value == null) {
                    unsetCcl();
                }
                else {
                    setCcl((java.lang.String) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.Long) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEYS:
                return getKeys();

            case CCL:
                return getCcl();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEYS:
                return isSetKeys();
            case CCL:
                return isSetCcl();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysCclTime_args)
                return this.equals((navigateKeysCclTime_args) that);
            return false;
        }

        public boolean equals(navigateKeysCclTime_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_keys = true && this.isSetKeys();
            boolean that_present_keys = true && that.isSetKeys();
            if(this_present_keys || that_present_keys) {
                if(!(this_present_keys && that_present_keys))
                    return false;
                if(!this.keys.equals(that.keys))
                    return false;
            }

            boolean this_present_ccl = true && this.isSetCcl();
            boolean that_present_ccl = true && that.isSetCcl();
            if(this_present_ccl || that_present_ccl) {
                if(!(this_present_ccl && that_present_ccl))
                    return false;
                if(!this.ccl.equals(that.ccl))
                    return false;
            }

            boolean this_present_timestamp = true;
            boolean that_present_timestamp = true;
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(this.timestamp != that.timestamp)
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKeys()) ? 131071 : 524287);
            if(isSetKeys())
                hashCode = hashCode * 8191 + keys.hashCode();

            hashCode = hashCode * 8191 + ((isSetCcl()) ? 131071 : 524287);
            if(isSetCcl())
                hashCode = hashCode * 8191 + ccl.hashCode();

            hashCode = hashCode * 8191
                    + org.apache.thrift.TBaseHelper.hashCode(timestamp);

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysCclTime_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKeys())
                    .compareTo(other.isSetKeys());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKeys()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.keys, other.keys);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCcl())
                    .compareTo(other.isSetCcl());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCcl()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ccl, other.ccl);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysCclTime_args(");
            boolean first = true;

            sb.append("keys:");
            if(this.keys == null) {
                sb.append("null");
            }
            else {
                sb.append(this.keys);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ccl:");
            if(this.ccl == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ccl);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            sb.append(this.timestamp);
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                // it doesn't seem like you should have to do this, but java
                // serialization is wacky, and doesn't call the default
                // constructor.
                __isset_bitfield = 0;
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysCclTime_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCclTime_argsStandardScheme getScheme() {
                return new navigateKeysCclTime_argsStandardScheme();
            }
        }

        private static class navigateKeysCclTime_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysCclTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEYS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list462 = iprot
                                        .readListBegin();
                                struct.keys = new java.util.ArrayList(
                                        _list462.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _elem463;
                                for (int _i464 = 0; _i464 < _list462.size; ++_i464) {
                                    _elem463 = iprot.readString();
                                    struct.keys.add(_elem463);
                                }
                                iprot.readListEnd();
                            }
                            struct.setKeysIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // CCL
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.ccl = iprot.readString();
                            struct.setCclIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.I64) {
                            struct.timestamp = iprot.readI64();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysCclTime_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.keys != null) {
                    oprot.writeFieldBegin(KEYS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.STRING,
                                        struct.keys.size()));
                        for (java.lang.String _iter465 : struct.keys) {
                            oprot.writeString(_iter465);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ccl != null) {
                    oprot.writeFieldBegin(CCL_FIELD_DESC);
                    oprot.writeString(struct.ccl);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                oprot.writeI64(struct.timestamp);
                oprot.writeFieldEnd();
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysCclTime_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCclTime_argsTupleScheme getScheme() {
                return new navigateKeysCclTime_argsTupleScheme();
            }
        }

        private static class navigateKeysCclTime_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCclTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKeys()) {
                    optionals.set(0);
                }
                if(struct.isSetCcl()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKeys()) {
                    {
                        oprot.writeI32(struct.keys.size());
                        for (java.lang.String _iter466 : struct.keys) {
                            oprot.writeString(_iter466);
                        }
                    }
                }
                if(struct.isSetCcl()) {
                    oprot.writeString(struct.ccl);
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeI64(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCclTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TList _list467 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.STRING,
                                iprot.readI32());
                        struct.keys = new java.util.ArrayList(
                                _list467.size);
                        @org.apache.thrift.annotation.Nullable java.lang.String _elem468;
                        for (int _i469 = 0; _i469 < _list467.size; ++_i469) {
                            _elem468 = iprot.readString();
                            struct.keys.add(_elem468);
                        }
                    }
                    struct.setKeysIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ccl = iprot.readString();
                    struct.setCclIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readI64();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysCclTime_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysCclTime_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysCclTime_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysCclTime_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map>> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.MapMetaData(
                                            org.apache.thrift.protocol.TType.MAP,
                                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                                    org.apache.thrift.protocol.TType.STRING),
                                            new org.apache.thrift.meta_data.SetMetaData(
                                                    org.apache.thrift.protocol.TType.SET,
                                                    new org.apache.thrift.meta_data.StructMetaData(
                                                            org.apache.thrift.protocol.TType.STRUCT,
                                                            com.cinchapi.concourse.thrift.TObject.class))))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysCclTime_result.class, metaDataMap);
        }

        public navigateKeysCclTime_result() {}

        public navigateKeysCclTime_result(
                java.util.Map>> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysCclTime_result(navigateKeysCclTime_result other) {
            if(other.isSetSuccess()) {
                java.util.Map>> __this__success = new java.util.LinkedHashMap>>(
                        other.success.size());
                for (java.util.Map.Entry>> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Map> other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Map> __this__success_copy_value = new java.util.LinkedHashMap>(
                            other_element_value.size());
                    for (java.util.Map.Entry> other_element_value_element : other_element_value
                            .entrySet()) {

                        java.lang.String other_element_value_element_key = other_element_value_element
                                .getKey();
                        java.util.Set other_element_value_element_value = other_element_value_element
                                .getValue();

                        java.lang.String __this__success_copy_value_copy_key = other_element_value_element_key;

                        java.util.Set __this__success_copy_value_copy_value = new java.util.LinkedHashSet(
                                other_element_value_element_value.size());
                        for (com.cinchapi.concourse.thrift.TObject other_element_value_element_value_element : other_element_value_element_value) {
                            __this__success_copy_value_copy_value
                                    .add(new com.cinchapi.concourse.thrift.TObject(
                                            other_element_value_element_value_element));
                        }

                        __this__success_copy_value.put(
                                __this__success_copy_value_copy_key,
                                __this__success_copy_value_copy_value);
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeysCclTime_result deepCopy() {
            return new navigateKeysCclTime_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Map> val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map>> getSuccess() {
            return this.success;
        }

        public navigateKeysCclTime_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map>> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeysCclTime_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeysCclTime_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeysCclTime_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeysCclTime_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysCclTime_result)
                return this.equals((navigateKeysCclTime_result) that);
            return false;
        }

        public boolean equals(navigateKeysCclTime_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysCclTime_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysCclTime_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysCclTime_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCclTime_resultStandardScheme getScheme() {
                return new navigateKeysCclTime_resultStandardScheme();
            }
        }

        private static class navigateKeysCclTime_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysCclTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map470 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>>(
                                        2 * _map470.size);
                                long _key471;
                                @org.apache.thrift.annotation.Nullable java.util.Map> _val472;
                                for (int _i473 = 0; _i473 < _map470.size; ++_i473) {
                                    _key471 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TMap _map474 = iprot
                                                .readMapBegin();
                                        _val472 = new java.util.LinkedHashMap>(
                                                2 * _map474.size);
                                        @org.apache.thrift.annotation.Nullable java.lang.String _key475;
                                        @org.apache.thrift.annotation.Nullable java.util.Set _val476;
                                        for (int _i477 = 0; _i477 < _map474.size; ++_i477) {
                                            _key475 = iprot.readString();
                                            {
                                                org.apache.thrift.protocol.TSet _set478 = iprot
                                                        .readSetBegin();
                                                _val476 = new java.util.LinkedHashSet(
                                                        2 * _set478.size);
                                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem479;
                                                for (int _i480 = 0; _i480 < _set478.size; ++_i480) {
                                                    _elem479 = new com.cinchapi.concourse.thrift.TObject();
                                                    _elem479.read(iprot);
                                                    _val476.add(_elem479);
                                                }
                                                iprot.readSetEnd();
                                            }
                                            _val472.put(_key475, _val476);
                                        }
                                        iprot.readMapEnd();
                                    }
                                    struct.success.put(_key471, _val472);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysCclTime_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                struct.success.size()));
                        for (java.util.Map.Entry>> _iter481 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter481.getKey());
                            {
                                oprot.writeMapBegin(
                                        new org.apache.thrift.protocol.TMap(
                                                org.apache.thrift.protocol.TType.STRING,
                                                org.apache.thrift.protocol.TType.SET,
                                                _iter481.getValue().size()));
                                for (java.util.Map.Entry> _iter482 : _iter481
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter482.getKey());
                                    {
                                        oprot.writeSetBegin(
                                                new org.apache.thrift.protocol.TSet(
                                                        org.apache.thrift.protocol.TType.STRUCT,
                                                        _iter482.getValue()
                                                                .size()));
                                        for (com.cinchapi.concourse.thrift.TObject _iter483 : _iter482
                                                .getValue()) {
                                            _iter483.write(oprot);
                                        }
                                        oprot.writeSetEnd();
                                    }
                                }
                                oprot.writeMapEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysCclTime_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCclTime_resultTupleScheme getScheme() {
                return new navigateKeysCclTime_resultTupleScheme();
            }
        }

        private static class navigateKeysCclTime_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCclTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry>> _iter484 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter484.getKey());
                            {
                                oprot.writeI32(_iter484.getValue().size());
                                for (java.util.Map.Entry> _iter485 : _iter484
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter485.getKey());
                                    {
                                        oprot.writeI32(
                                                _iter485.getValue().size());
                                        for (com.cinchapi.concourse.thrift.TObject _iter486 : _iter485
                                                .getValue()) {
                                            _iter486.write(oprot);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCclTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map487 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>>(
                                2 * _map487.size);
                        long _key488;
                        @org.apache.thrift.annotation.Nullable java.util.Map> _val489;
                        for (int _i490 = 0; _i490 < _map487.size; ++_i490) {
                            _key488 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TMap _map491 = new org.apache.thrift.protocol.TMap(
                                        org.apache.thrift.protocol.TType.STRING,
                                        org.apache.thrift.protocol.TType.SET,
                                        iprot.readI32());
                                _val489 = new java.util.LinkedHashMap>(
                                        2 * _map491.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _key492;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val493;
                                for (int _i494 = 0; _i494 < _map491.size; ++_i494) {
                                    _key492 = iprot.readString();
                                    {
                                        org.apache.thrift.protocol.TSet _set495 = new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                iprot.readI32());
                                        _val493 = new java.util.LinkedHashSet(
                                                2 * _set495.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem496;
                                        for (int _i497 = 0; _i497 < _set495.size; ++_i497) {
                                            _elem496 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem496.read(iprot);
                                            _val493.add(_elem496);
                                        }
                                    }
                                    _val489.put(_key492, _val493);
                                }
                            }
                            struct.success.put(_key488, _val489);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysCclTimestr_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysCclTimestr_args");

        private static final org.apache.thrift.protocol.TField KEYS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "keys", org.apache.thrift.protocol.TType.LIST, (short) 1);
        private static final org.apache.thrift.protocol.TField CCL_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ccl", org.apache.thrift.protocol.TType.STRING, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.STRING,
                (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysCclTimestr_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysCclTimestr_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.List keys; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String ccl; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEYS((short) 1, "keys"),
            CCL((short) 2, "ccl"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEYS
                    return KEYS;
                case 2: // CCL
                    return CCL;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEYS,
                    new org.apache.thrift.meta_data.FieldMetaData("keys",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.STRING))));
            tmpMap.put(_Fields.CCL,
                    new org.apache.thrift.meta_data.FieldMetaData("ccl",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysCclTimestr_args.class, metaDataMap);
        }

        public navigateKeysCclTimestr_args() {}

        public navigateKeysCclTimestr_args(
                java.util.List keys, java.lang.String ccl,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.keys = keys;
            this.ccl = ccl;
            this.timestamp = timestamp;
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysCclTimestr_args(navigateKeysCclTimestr_args other) {
            if(other.isSetKeys()) {
                java.util.List __this__keys = new java.util.ArrayList(
                        other.keys);
                this.keys = __this__keys;
            }
            if(other.isSetCcl()) {
                this.ccl = other.ccl;
            }
            if(other.isSetTimestamp()) {
                this.timestamp = other.timestamp;
            }
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeysCclTimestr_args deepCopy() {
            return new navigateKeysCclTimestr_args(this);
        }

        @Override
        public void clear() {
            this.keys = null;
            this.ccl = null;
            this.timestamp = null;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        public int getKeysSize() {
            return (this.keys == null) ? 0 : this.keys.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getKeysIterator() {
            return (this.keys == null) ? null : this.keys.iterator();
        }

        public void addToKeys(java.lang.String elem) {
            if(this.keys == null) {
                this.keys = new java.util.ArrayList();
            }
            this.keys.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getKeys() {
            return this.keys;
        }

        public navigateKeysCclTimestr_args setKeys(
                @org.apache.thrift.annotation.Nullable java.util.List keys) {
            this.keys = keys;
            return this;
        }

        public void unsetKeys() {
            this.keys = null;
        }

        /**
         * Returns true if field keys is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKeys() {
            return this.keys != null;
        }

        public void setKeysIsSet(boolean value) {
            if(!value) {
                this.keys = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getCcl() {
            return this.ccl;
        }

        public navigateKeysCclTimestr_args setCcl(
                @org.apache.thrift.annotation.Nullable java.lang.String ccl) {
            this.ccl = ccl;
            return this;
        }

        public void unsetCcl() {
            this.ccl = null;
        }

        /**
         * Returns true if field ccl is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCcl() {
            return this.ccl != null;
        }

        public void setCclIsSet(boolean value) {
            if(!value) {
                this.ccl = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getTimestamp() {
            return this.timestamp;
        }

        public navigateKeysCclTimestr_args setTimestamp(
                @org.apache.thrift.annotation.Nullable java.lang.String timestamp) {
            this.timestamp = timestamp;
            return this;
        }

        public void unsetTimestamp() {
            this.timestamp = null;
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return this.timestamp != null;
        }

        public void setTimestampIsSet(boolean value) {
            if(!value) {
                this.timestamp = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeysCclTimestr_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeysCclTimestr_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeysCclTimestr_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEYS:
                if(value == null) {
                    unsetKeys();
                }
                else {
                    setKeys((java.util.List) value);
                }
                break;

            case CCL:
                if(value == null) {
                    unsetCcl();
                }
                else {
                    setCcl((java.lang.String) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.String) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEYS:
                return getKeys();

            case CCL:
                return getCcl();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEYS:
                return isSetKeys();
            case CCL:
                return isSetCcl();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysCclTimestr_args)
                return this.equals((navigateKeysCclTimestr_args) that);
            return false;
        }

        public boolean equals(navigateKeysCclTimestr_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_keys = true && this.isSetKeys();
            boolean that_present_keys = true && that.isSetKeys();
            if(this_present_keys || that_present_keys) {
                if(!(this_present_keys && that_present_keys))
                    return false;
                if(!this.keys.equals(that.keys))
                    return false;
            }

            boolean this_present_ccl = true && this.isSetCcl();
            boolean that_present_ccl = true && that.isSetCcl();
            if(this_present_ccl || that_present_ccl) {
                if(!(this_present_ccl && that_present_ccl))
                    return false;
                if(!this.ccl.equals(that.ccl))
                    return false;
            }

            boolean this_present_timestamp = true && this.isSetTimestamp();
            boolean that_present_timestamp = true && that.isSetTimestamp();
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(!this.timestamp.equals(that.timestamp))
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKeys()) ? 131071 : 524287);
            if(isSetKeys())
                hashCode = hashCode * 8191 + keys.hashCode();

            hashCode = hashCode * 8191 + ((isSetCcl()) ? 131071 : 524287);
            if(isSetCcl())
                hashCode = hashCode * 8191 + ccl.hashCode();

            hashCode = hashCode * 8191 + ((isSetTimestamp()) ? 131071 : 524287);
            if(isSetTimestamp())
                hashCode = hashCode * 8191 + timestamp.hashCode();

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysCclTimestr_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKeys())
                    .compareTo(other.isSetKeys());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKeys()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.keys, other.keys);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCcl())
                    .compareTo(other.isSetCcl());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCcl()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ccl, other.ccl);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysCclTimestr_args(");
            boolean first = true;

            sb.append("keys:");
            if(this.keys == null) {
                sb.append("null");
            }
            else {
                sb.append(this.keys);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ccl:");
            if(this.ccl == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ccl);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            if(this.timestamp == null) {
                sb.append("null");
            }
            else {
                sb.append(this.timestamp);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysCclTimestr_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCclTimestr_argsStandardScheme getScheme() {
                return new navigateKeysCclTimestr_argsStandardScheme();
            }
        }

        private static class navigateKeysCclTimestr_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysCclTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEYS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list498 = iprot
                                        .readListBegin();
                                struct.keys = new java.util.ArrayList(
                                        _list498.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _elem499;
                                for (int _i500 = 0; _i500 < _list498.size; ++_i500) {
                                    _elem499 = iprot.readString();
                                    struct.keys.add(_elem499);
                                }
                                iprot.readListEnd();
                            }
                            struct.setKeysIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // CCL
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.ccl = iprot.readString();
                            struct.setCclIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.timestamp = iprot.readString();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysCclTimestr_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.keys != null) {
                    oprot.writeFieldBegin(KEYS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.STRING,
                                        struct.keys.size()));
                        for (java.lang.String _iter501 : struct.keys) {
                            oprot.writeString(_iter501);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ccl != null) {
                    oprot.writeFieldBegin(CCL_FIELD_DESC);
                    oprot.writeString(struct.ccl);
                    oprot.writeFieldEnd();
                }
                if(struct.timestamp != null) {
                    oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                    oprot.writeString(struct.timestamp);
                    oprot.writeFieldEnd();
                }
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysCclTimestr_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCclTimestr_argsTupleScheme getScheme() {
                return new navigateKeysCclTimestr_argsTupleScheme();
            }
        }

        private static class navigateKeysCclTimestr_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCclTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKeys()) {
                    optionals.set(0);
                }
                if(struct.isSetCcl()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKeys()) {
                    {
                        oprot.writeI32(struct.keys.size());
                        for (java.lang.String _iter502 : struct.keys) {
                            oprot.writeString(_iter502);
                        }
                    }
                }
                if(struct.isSetCcl()) {
                    oprot.writeString(struct.ccl);
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeString(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCclTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TList _list503 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.STRING,
                                iprot.readI32());
                        struct.keys = new java.util.ArrayList(
                                _list503.size);
                        @org.apache.thrift.annotation.Nullable java.lang.String _elem504;
                        for (int _i505 = 0; _i505 < _list503.size; ++_i505) {
                            _elem504 = iprot.readString();
                            struct.keys.add(_elem504);
                        }
                    }
                    struct.setKeysIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ccl = iprot.readString();
                    struct.setCclIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readString();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysCclTimestr_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysCclTimestr_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysCclTimestr_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysCclTimestr_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map>> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.MapMetaData(
                                            org.apache.thrift.protocol.TType.MAP,
                                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                                    org.apache.thrift.protocol.TType.STRING),
                                            new org.apache.thrift.meta_data.SetMetaData(
                                                    org.apache.thrift.protocol.TType.SET,
                                                    new org.apache.thrift.meta_data.StructMetaData(
                                                            org.apache.thrift.protocol.TType.STRUCT,
                                                            com.cinchapi.concourse.thrift.TObject.class))))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysCclTimestr_result.class, metaDataMap);
        }

        public navigateKeysCclTimestr_result() {}

        public navigateKeysCclTimestr_result(
                java.util.Map>> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysCclTimestr_result(
                navigateKeysCclTimestr_result other) {
            if(other.isSetSuccess()) {
                java.util.Map>> __this__success = new java.util.LinkedHashMap>>(
                        other.success.size());
                for (java.util.Map.Entry>> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Map> other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Map> __this__success_copy_value = new java.util.LinkedHashMap>(
                            other_element_value.size());
                    for (java.util.Map.Entry> other_element_value_element : other_element_value
                            .entrySet()) {

                        java.lang.String other_element_value_element_key = other_element_value_element
                                .getKey();
                        java.util.Set other_element_value_element_value = other_element_value_element
                                .getValue();

                        java.lang.String __this__success_copy_value_copy_key = other_element_value_element_key;

                        java.util.Set __this__success_copy_value_copy_value = new java.util.LinkedHashSet(
                                other_element_value_element_value.size());
                        for (com.cinchapi.concourse.thrift.TObject other_element_value_element_value_element : other_element_value_element_value) {
                            __this__success_copy_value_copy_value
                                    .add(new com.cinchapi.concourse.thrift.TObject(
                                            other_element_value_element_value_element));
                        }

                        __this__success_copy_value.put(
                                __this__success_copy_value_copy_key,
                                __this__success_copy_value_copy_value);
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeysCclTimestr_result deepCopy() {
            return new navigateKeysCclTimestr_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Map> val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map>> getSuccess() {
            return this.success;
        }

        public navigateKeysCclTimestr_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map>> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeysCclTimestr_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeysCclTimestr_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeysCclTimestr_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeysCclTimestr_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysCclTimestr_result)
                return this.equals((navigateKeysCclTimestr_result) that);
            return false;
        }

        public boolean equals(navigateKeysCclTimestr_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysCclTimestr_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysCclTimestr_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysCclTimestr_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCclTimestr_resultStandardScheme getScheme() {
                return new navigateKeysCclTimestr_resultStandardScheme();
            }
        }

        private static class navigateKeysCclTimestr_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysCclTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map506 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>>(
                                        2 * _map506.size);
                                long _key507;
                                @org.apache.thrift.annotation.Nullable java.util.Map> _val508;
                                for (int _i509 = 0; _i509 < _map506.size; ++_i509) {
                                    _key507 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TMap _map510 = iprot
                                                .readMapBegin();
                                        _val508 = new java.util.LinkedHashMap>(
                                                2 * _map510.size);
                                        @org.apache.thrift.annotation.Nullable java.lang.String _key511;
                                        @org.apache.thrift.annotation.Nullable java.util.Set _val512;
                                        for (int _i513 = 0; _i513 < _map510.size; ++_i513) {
                                            _key511 = iprot.readString();
                                            {
                                                org.apache.thrift.protocol.TSet _set514 = iprot
                                                        .readSetBegin();
                                                _val512 = new java.util.LinkedHashSet(
                                                        2 * _set514.size);
                                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem515;
                                                for (int _i516 = 0; _i516 < _set514.size; ++_i516) {
                                                    _elem515 = new com.cinchapi.concourse.thrift.TObject();
                                                    _elem515.read(iprot);
                                                    _val512.add(_elem515);
                                                }
                                                iprot.readSetEnd();
                                            }
                                            _val508.put(_key511, _val512);
                                        }
                                        iprot.readMapEnd();
                                    }
                                    struct.success.put(_key507, _val508);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysCclTimestr_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                struct.success.size()));
                        for (java.util.Map.Entry>> _iter517 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter517.getKey());
                            {
                                oprot.writeMapBegin(
                                        new org.apache.thrift.protocol.TMap(
                                                org.apache.thrift.protocol.TType.STRING,
                                                org.apache.thrift.protocol.TType.SET,
                                                _iter517.getValue().size()));
                                for (java.util.Map.Entry> _iter518 : _iter517
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter518.getKey());
                                    {
                                        oprot.writeSetBegin(
                                                new org.apache.thrift.protocol.TSet(
                                                        org.apache.thrift.protocol.TType.STRUCT,
                                                        _iter518.getValue()
                                                                .size()));
                                        for (com.cinchapi.concourse.thrift.TObject _iter519 : _iter518
                                                .getValue()) {
                                            _iter519.write(oprot);
                                        }
                                        oprot.writeSetEnd();
                                    }
                                }
                                oprot.writeMapEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysCclTimestr_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCclTimestr_resultTupleScheme getScheme() {
                return new navigateKeysCclTimestr_resultTupleScheme();
            }
        }

        private static class navigateKeysCclTimestr_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCclTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry>> _iter520 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter520.getKey());
                            {
                                oprot.writeI32(_iter520.getValue().size());
                                for (java.util.Map.Entry> _iter521 : _iter520
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter521.getKey());
                                    {
                                        oprot.writeI32(
                                                _iter521.getValue().size());
                                        for (com.cinchapi.concourse.thrift.TObject _iter522 : _iter521
                                                .getValue()) {
                                            _iter522.write(oprot);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCclTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map523 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>>(
                                2 * _map523.size);
                        long _key524;
                        @org.apache.thrift.annotation.Nullable java.util.Map> _val525;
                        for (int _i526 = 0; _i526 < _map523.size; ++_i526) {
                            _key524 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TMap _map527 = new org.apache.thrift.protocol.TMap(
                                        org.apache.thrift.protocol.TType.STRING,
                                        org.apache.thrift.protocol.TType.SET,
                                        iprot.readI32());
                                _val525 = new java.util.LinkedHashMap>(
                                        2 * _map527.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _key528;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val529;
                                for (int _i530 = 0; _i530 < _map527.size; ++_i530) {
                                    _key528 = iprot.readString();
                                    {
                                        org.apache.thrift.protocol.TSet _set531 = new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                iprot.readI32());
                                        _val529 = new java.util.LinkedHashSet(
                                                2 * _set531.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem532;
                                        for (int _i533 = 0; _i533 < _set531.size; ++_i533) {
                                            _elem532 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem532.read(iprot);
                                            _val529.add(_elem532);
                                        }
                                    }
                                    _val525.put(_key528, _val529);
                                }
                            }
                            struct.success.put(_key524, _val525);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyCriteria_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyCriteria_args");

        private static final org.apache.thrift.protocol.TField KEY_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "key", org.apache.thrift.protocol.TType.STRING, (short) 1);
        private static final org.apache.thrift.protocol.TField CRITERIA_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "criteria", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 4);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 5);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyCriteria_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyCriteria_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.lang.String key; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TCriteria criteria; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEY((short) 1, "key"),
            CRITERIA((short) 2, "criteria"),
            CREDS((short) 3, "creds"),
            TRANSACTION((short) 4, "transaction"),
            ENVIRONMENT((short) 5, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEY
                    return KEY;
                case 2: // CRITERIA
                    return CRITERIA;
                case 3: // CREDS
                    return CREDS;
                case 4: // TRANSACTION
                    return TRANSACTION;
                case 5: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEY,
                    new org.apache.thrift.meta_data.FieldMetaData("key",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CRITERIA,
                    new org.apache.thrift.meta_data.FieldMetaData("criteria",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TCriteria.class)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyCriteria_args.class, metaDataMap);
        }

        public navigateKeyCriteria_args() {}

        public navigateKeyCriteria_args(java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.key = key;
            this.criteria = criteria;
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyCriteria_args(navigateKeyCriteria_args other) {
            if(other.isSetKey()) {
                this.key = other.key;
            }
            if(other.isSetCriteria()) {
                this.criteria = new com.cinchapi.concourse.thrift.TCriteria(
                        other.criteria);
            }
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeyCriteria_args deepCopy() {
            return new navigateKeyCriteria_args(this);
        }

        @Override
        public void clear() {
            this.key = null;
            this.criteria = null;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getKey() {
            return this.key;
        }

        public navigateKeyCriteria_args setKey(
                @org.apache.thrift.annotation.Nullable java.lang.String key) {
            this.key = key;
            return this;
        }

        public void unsetKey() {
            this.key = null;
        }

        /**
         * Returns true if field key is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKey() {
            return this.key != null;
        }

        public void setKeyIsSet(boolean value) {
            if(!value) {
                this.key = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TCriteria getCriteria() {
            return this.criteria;
        }

        public navigateKeyCriteria_args setCriteria(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TCriteria criteria) {
            this.criteria = criteria;
            return this;
        }

        public void unsetCriteria() {
            this.criteria = null;
        }

        /**
         * Returns true if field criteria is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCriteria() {
            return this.criteria != null;
        }

        public void setCriteriaIsSet(boolean value) {
            if(!value) {
                this.criteria = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeyCriteria_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeyCriteria_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeyCriteria_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEY:
                if(value == null) {
                    unsetKey();
                }
                else {
                    setKey((java.lang.String) value);
                }
                break;

            case CRITERIA:
                if(value == null) {
                    unsetCriteria();
                }
                else {
                    setCriteria(
                            (com.cinchapi.concourse.thrift.TCriteria) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEY:
                return getKey();

            case CRITERIA:
                return getCriteria();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEY:
                return isSetKey();
            case CRITERIA:
                return isSetCriteria();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyCriteria_args)
                return this.equals((navigateKeyCriteria_args) that);
            return false;
        }

        public boolean equals(navigateKeyCriteria_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_key = true && this.isSetKey();
            boolean that_present_key = true && that.isSetKey();
            if(this_present_key || that_present_key) {
                if(!(this_present_key && that_present_key))
                    return false;
                if(!this.key.equals(that.key))
                    return false;
            }

            boolean this_present_criteria = true && this.isSetCriteria();
            boolean that_present_criteria = true && that.isSetCriteria();
            if(this_present_criteria || that_present_criteria) {
                if(!(this_present_criteria && that_present_criteria))
                    return false;
                if(!this.criteria.equals(that.criteria))
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKey()) ? 131071 : 524287);
            if(isSetKey())
                hashCode = hashCode * 8191 + key.hashCode();

            hashCode = hashCode * 8191 + ((isSetCriteria()) ? 131071 : 524287);
            if(isSetCriteria())
                hashCode = hashCode * 8191 + criteria.hashCode();

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyCriteria_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKey())
                    .compareTo(other.isSetKey());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKey()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.key, other.key);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCriteria())
                    .compareTo(other.isSetCriteria());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCriteria()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.criteria, other.criteria);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyCriteria_args(");
            boolean first = true;

            sb.append("key:");
            if(this.key == null) {
                sb.append("null");
            }
            else {
                sb.append(this.key);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("criteria:");
            if(this.criteria == null) {
                sb.append("null");
            }
            else {
                sb.append(this.criteria);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(criteria != null) {
                criteria.validate();
            }
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyCriteria_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCriteria_argsStandardScheme getScheme() {
                return new navigateKeyCriteria_argsStandardScheme();
            }
        }

        private static class navigateKeyCriteria_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyCriteria_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEY
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.key = iprot.readString();
                            struct.setKeyIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // CRITERIA
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.criteria = new com.cinchapi.concourse.thrift.TCriteria();
                            struct.criteria.read(iprot);
                            struct.setCriteriaIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyCriteria_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.key != null) {
                    oprot.writeFieldBegin(KEY_FIELD_DESC);
                    oprot.writeString(struct.key);
                    oprot.writeFieldEnd();
                }
                if(struct.criteria != null) {
                    oprot.writeFieldBegin(CRITERIA_FIELD_DESC);
                    struct.criteria.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyCriteria_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCriteria_argsTupleScheme getScheme() {
                return new navigateKeyCriteria_argsTupleScheme();
            }
        }

        private static class navigateKeyCriteria_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCriteria_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKey()) {
                    optionals.set(0);
                }
                if(struct.isSetCriteria()) {
                    optionals.set(1);
                }
                if(struct.isSetCreds()) {
                    optionals.set(2);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(3);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetKey()) {
                    oprot.writeString(struct.key);
                }
                if(struct.isSetCriteria()) {
                    struct.criteria.write(oprot);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCriteria_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    struct.key = iprot.readString();
                    struct.setKeyIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.criteria = new com.cinchapi.concourse.thrift.TCriteria();
                    struct.criteria.read(iprot);
                    struct.setCriteriaIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyCriteria_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyCriteria_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyCriteria_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyCriteria_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.SetMetaData(
                                            org.apache.thrift.protocol.TType.SET,
                                            new org.apache.thrift.meta_data.StructMetaData(
                                                    org.apache.thrift.protocol.TType.STRUCT,
                                                    com.cinchapi.concourse.thrift.TObject.class)))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyCriteria_result.class, metaDataMap);
        }

        public navigateKeyCriteria_result() {}

        public navigateKeyCriteria_result(
                java.util.Map> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyCriteria_result(navigateKeyCriteria_result other) {
            if(other.isSetSuccess()) {
                java.util.Map> __this__success = new java.util.LinkedHashMap>(
                        other.success.size());
                for (java.util.Map.Entry> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Set other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Set __this__success_copy_value = new java.util.LinkedHashSet(
                            other_element_value.size());
                    for (com.cinchapi.concourse.thrift.TObject other_element_value_element : other_element_value) {
                        __this__success_copy_value
                                .add(new com.cinchapi.concourse.thrift.TObject(
                                        other_element_value_element));
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeyCriteria_result deepCopy() {
            return new navigateKeyCriteria_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Set val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map> getSuccess() {
            return this.success;
        }

        public navigateKeyCriteria_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeyCriteria_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeyCriteria_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeyCriteria_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeyCriteria_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyCriteria_result)
                return this.equals((navigateKeyCriteria_result) that);
            return false;
        }

        public boolean equals(navigateKeyCriteria_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyCriteria_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyCriteria_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyCriteria_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCriteria_resultStandardScheme getScheme() {
                return new navigateKeyCriteria_resultStandardScheme();
            }
        }

        private static class navigateKeyCriteria_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyCriteria_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map534 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>(
                                        2 * _map534.size);
                                long _key535;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val536;
                                for (int _i537 = 0; _i537 < _map534.size; ++_i537) {
                                    _key535 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TSet _set538 = iprot
                                                .readSetBegin();
                                        _val536 = new java.util.LinkedHashSet(
                                                2 * _set538.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem539;
                                        for (int _i540 = 0; _i540 < _set538.size; ++_i540) {
                                            _elem539 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem539.read(iprot);
                                            _val536.add(_elem539);
                                        }
                                        iprot.readSetEnd();
                                    }
                                    struct.success.put(_key535, _val536);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyCriteria_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                struct.success.size()));
                        for (java.util.Map.Entry> _iter541 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter541.getKey());
                            {
                                oprot.writeSetBegin(
                                        new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                _iter541.getValue().size()));
                                for (com.cinchapi.concourse.thrift.TObject _iter542 : _iter541
                                        .getValue()) {
                                    _iter542.write(oprot);
                                }
                                oprot.writeSetEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyCriteria_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCriteria_resultTupleScheme getScheme() {
                return new navigateKeyCriteria_resultTupleScheme();
            }
        }

        private static class navigateKeyCriteria_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCriteria_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry> _iter543 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter543.getKey());
                            {
                                oprot.writeI32(_iter543.getValue().size());
                                for (com.cinchapi.concourse.thrift.TObject _iter544 : _iter543
                                        .getValue()) {
                                    _iter544.write(oprot);
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCriteria_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map545 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>(
                                2 * _map545.size);
                        long _key546;
                        @org.apache.thrift.annotation.Nullable java.util.Set _val547;
                        for (int _i548 = 0; _i548 < _map545.size; ++_i548) {
                            _key546 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TSet _set549 = new org.apache.thrift.protocol.TSet(
                                        org.apache.thrift.protocol.TType.STRUCT,
                                        iprot.readI32());
                                _val547 = new java.util.LinkedHashSet(
                                        2 * _set549.size);
                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem550;
                                for (int _i551 = 0; _i551 < _set549.size; ++_i551) {
                                    _elem550 = new com.cinchapi.concourse.thrift.TObject();
                                    _elem550.read(iprot);
                                    _val547.add(_elem550);
                                }
                            }
                            struct.success.put(_key546, _val547);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyCriteriaTime_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyCriteriaTime_args");

        private static final org.apache.thrift.protocol.TField KEY_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "key", org.apache.thrift.protocol.TType.STRING, (short) 1);
        private static final org.apache.thrift.protocol.TField CRITERIA_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "criteria", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.I64, (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyCriteriaTime_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyCriteriaTime_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.lang.String key; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TCriteria criteria; // required
        public long timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEY((short) 1, "key"),
            CRITERIA((short) 2, "criteria"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEY
                    return KEY;
                case 2: // CRITERIA
                    return CRITERIA;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        private static final int __TIMESTAMP_ISSET_ID = 0;
        private byte __isset_bitfield = 0;
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEY,
                    new org.apache.thrift.meta_data.FieldMetaData("key",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CRITERIA,
                    new org.apache.thrift.meta_data.FieldMetaData("criteria",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TCriteria.class)));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.I64)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyCriteriaTime_args.class, metaDataMap);
        }

        public navigateKeyCriteriaTime_args() {}

        public navigateKeyCriteriaTime_args(java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.key = key;
            this.criteria = criteria;
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyCriteriaTime_args(
                navigateKeyCriteriaTime_args other) {
            __isset_bitfield = other.__isset_bitfield;
            if(other.isSetKey()) {
                this.key = other.key;
            }
            if(other.isSetCriteria()) {
                this.criteria = new com.cinchapi.concourse.thrift.TCriteria(
                        other.criteria);
            }
            this.timestamp = other.timestamp;
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeyCriteriaTime_args deepCopy() {
            return new navigateKeyCriteriaTime_args(this);
        }

        @Override
        public void clear() {
            this.key = null;
            this.criteria = null;
            setTimestampIsSet(false);
            this.timestamp = 0;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getKey() {
            return this.key;
        }

        public navigateKeyCriteriaTime_args setKey(
                @org.apache.thrift.annotation.Nullable java.lang.String key) {
            this.key = key;
            return this;
        }

        public void unsetKey() {
            this.key = null;
        }

        /**
         * Returns true if field key is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKey() {
            return this.key != null;
        }

        public void setKeyIsSet(boolean value) {
            if(!value) {
                this.key = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TCriteria getCriteria() {
            return this.criteria;
        }

        public navigateKeyCriteriaTime_args setCriteria(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TCriteria criteria) {
            this.criteria = criteria;
            return this;
        }

        public void unsetCriteria() {
            this.criteria = null;
        }

        /**
         * Returns true if field criteria is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCriteria() {
            return this.criteria != null;
        }

        public void setCriteriaIsSet(boolean value) {
            if(!value) {
                this.criteria = null;
            }
        }

        public long getTimestamp() {
            return this.timestamp;
        }

        public navigateKeyCriteriaTime_args setTimestamp(long timestamp) {
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            return this;
        }

        public void unsetTimestamp() {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .clearBit(__isset_bitfield, __TIMESTAMP_ISSET_ID);
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield,
                    __TIMESTAMP_ISSET_ID);
        }

        public void setTimestampIsSet(boolean value) {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .setBit(__isset_bitfield, __TIMESTAMP_ISSET_ID, value);
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeyCriteriaTime_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeyCriteriaTime_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeyCriteriaTime_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEY:
                if(value == null) {
                    unsetKey();
                }
                else {
                    setKey((java.lang.String) value);
                }
                break;

            case CRITERIA:
                if(value == null) {
                    unsetCriteria();
                }
                else {
                    setCriteria(
                            (com.cinchapi.concourse.thrift.TCriteria) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.Long) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEY:
                return getKey();

            case CRITERIA:
                return getCriteria();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEY:
                return isSetKey();
            case CRITERIA:
                return isSetCriteria();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyCriteriaTime_args)
                return this.equals((navigateKeyCriteriaTime_args) that);
            return false;
        }

        public boolean equals(navigateKeyCriteriaTime_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_key = true && this.isSetKey();
            boolean that_present_key = true && that.isSetKey();
            if(this_present_key || that_present_key) {
                if(!(this_present_key && that_present_key))
                    return false;
                if(!this.key.equals(that.key))
                    return false;
            }

            boolean this_present_criteria = true && this.isSetCriteria();
            boolean that_present_criteria = true && that.isSetCriteria();
            if(this_present_criteria || that_present_criteria) {
                if(!(this_present_criteria && that_present_criteria))
                    return false;
                if(!this.criteria.equals(that.criteria))
                    return false;
            }

            boolean this_present_timestamp = true;
            boolean that_present_timestamp = true;
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(this.timestamp != that.timestamp)
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKey()) ? 131071 : 524287);
            if(isSetKey())
                hashCode = hashCode * 8191 + key.hashCode();

            hashCode = hashCode * 8191 + ((isSetCriteria()) ? 131071 : 524287);
            if(isSetCriteria())
                hashCode = hashCode * 8191 + criteria.hashCode();

            hashCode = hashCode * 8191
                    + org.apache.thrift.TBaseHelper.hashCode(timestamp);

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyCriteriaTime_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKey())
                    .compareTo(other.isSetKey());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKey()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.key, other.key);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCriteria())
                    .compareTo(other.isSetCriteria());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCriteria()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.criteria, other.criteria);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyCriteriaTime_args(");
            boolean first = true;

            sb.append("key:");
            if(this.key == null) {
                sb.append("null");
            }
            else {
                sb.append(this.key);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("criteria:");
            if(this.criteria == null) {
                sb.append("null");
            }
            else {
                sb.append(this.criteria);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            sb.append(this.timestamp);
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(criteria != null) {
                criteria.validate();
            }
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                // it doesn't seem like you should have to do this, but java
                // serialization is wacky, and doesn't call the default
                // constructor.
                __isset_bitfield = 0;
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyCriteriaTime_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCriteriaTime_argsStandardScheme getScheme() {
                return new navigateKeyCriteriaTime_argsStandardScheme();
            }
        }

        private static class navigateKeyCriteriaTime_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyCriteriaTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEY
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.key = iprot.readString();
                            struct.setKeyIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // CRITERIA
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.criteria = new com.cinchapi.concourse.thrift.TCriteria();
                            struct.criteria.read(iprot);
                            struct.setCriteriaIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.I64) {
                            struct.timestamp = iprot.readI64();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyCriteriaTime_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.key != null) {
                    oprot.writeFieldBegin(KEY_FIELD_DESC);
                    oprot.writeString(struct.key);
                    oprot.writeFieldEnd();
                }
                if(struct.criteria != null) {
                    oprot.writeFieldBegin(CRITERIA_FIELD_DESC);
                    struct.criteria.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                oprot.writeI64(struct.timestamp);
                oprot.writeFieldEnd();
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyCriteriaTime_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCriteriaTime_argsTupleScheme getScheme() {
                return new navigateKeyCriteriaTime_argsTupleScheme();
            }
        }

        private static class navigateKeyCriteriaTime_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCriteriaTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKey()) {
                    optionals.set(0);
                }
                if(struct.isSetCriteria()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKey()) {
                    oprot.writeString(struct.key);
                }
                if(struct.isSetCriteria()) {
                    struct.criteria.write(oprot);
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeI64(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCriteriaTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    struct.key = iprot.readString();
                    struct.setKeyIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.criteria = new com.cinchapi.concourse.thrift.TCriteria();
                    struct.criteria.read(iprot);
                    struct.setCriteriaIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readI64();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyCriteriaTime_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyCriteriaTime_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyCriteriaTime_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyCriteriaTime_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.SetMetaData(
                                            org.apache.thrift.protocol.TType.SET,
                                            new org.apache.thrift.meta_data.StructMetaData(
                                                    org.apache.thrift.protocol.TType.STRUCT,
                                                    com.cinchapi.concourse.thrift.TObject.class)))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyCriteriaTime_result.class, metaDataMap);
        }

        public navigateKeyCriteriaTime_result() {}

        public navigateKeyCriteriaTime_result(
                java.util.Map> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyCriteriaTime_result(
                navigateKeyCriteriaTime_result other) {
            if(other.isSetSuccess()) {
                java.util.Map> __this__success = new java.util.LinkedHashMap>(
                        other.success.size());
                for (java.util.Map.Entry> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Set other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Set __this__success_copy_value = new java.util.LinkedHashSet(
                            other_element_value.size());
                    for (com.cinchapi.concourse.thrift.TObject other_element_value_element : other_element_value) {
                        __this__success_copy_value
                                .add(new com.cinchapi.concourse.thrift.TObject(
                                        other_element_value_element));
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeyCriteriaTime_result deepCopy() {
            return new navigateKeyCriteriaTime_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Set val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map> getSuccess() {
            return this.success;
        }

        public navigateKeyCriteriaTime_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeyCriteriaTime_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeyCriteriaTime_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeyCriteriaTime_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeyCriteriaTime_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyCriteriaTime_result)
                return this.equals((navigateKeyCriteriaTime_result) that);
            return false;
        }

        public boolean equals(navigateKeyCriteriaTime_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyCriteriaTime_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyCriteriaTime_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyCriteriaTime_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCriteriaTime_resultStandardScheme getScheme() {
                return new navigateKeyCriteriaTime_resultStandardScheme();
            }
        }

        private static class navigateKeyCriteriaTime_resultStandardScheme
                extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyCriteriaTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map552 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>(
                                        2 * _map552.size);
                                long _key553;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val554;
                                for (int _i555 = 0; _i555 < _map552.size; ++_i555) {
                                    _key553 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TSet _set556 = iprot
                                                .readSetBegin();
                                        _val554 = new java.util.LinkedHashSet(
                                                2 * _set556.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem557;
                                        for (int _i558 = 0; _i558 < _set556.size; ++_i558) {
                                            _elem557 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem557.read(iprot);
                                            _val554.add(_elem557);
                                        }
                                        iprot.readSetEnd();
                                    }
                                    struct.success.put(_key553, _val554);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyCriteriaTime_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                struct.success.size()));
                        for (java.util.Map.Entry> _iter559 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter559.getKey());
                            {
                                oprot.writeSetBegin(
                                        new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                _iter559.getValue().size()));
                                for (com.cinchapi.concourse.thrift.TObject _iter560 : _iter559
                                        .getValue()) {
                                    _iter560.write(oprot);
                                }
                                oprot.writeSetEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyCriteriaTime_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCriteriaTime_resultTupleScheme getScheme() {
                return new navigateKeyCriteriaTime_resultTupleScheme();
            }
        }

        private static class navigateKeyCriteriaTime_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCriteriaTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry> _iter561 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter561.getKey());
                            {
                                oprot.writeI32(_iter561.getValue().size());
                                for (com.cinchapi.concourse.thrift.TObject _iter562 : _iter561
                                        .getValue()) {
                                    _iter562.write(oprot);
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCriteriaTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map563 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>(
                                2 * _map563.size);
                        long _key564;
                        @org.apache.thrift.annotation.Nullable java.util.Set _val565;
                        for (int _i566 = 0; _i566 < _map563.size; ++_i566) {
                            _key564 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TSet _set567 = new org.apache.thrift.protocol.TSet(
                                        org.apache.thrift.protocol.TType.STRUCT,
                                        iprot.readI32());
                                _val565 = new java.util.LinkedHashSet(
                                        2 * _set567.size);
                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem568;
                                for (int _i569 = 0; _i569 < _set567.size; ++_i569) {
                                    _elem568 = new com.cinchapi.concourse.thrift.TObject();
                                    _elem568.read(iprot);
                                    _val565.add(_elem568);
                                }
                            }
                            struct.success.put(_key564, _val565);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyCriteriaTimestr_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyCriteriaTimestr_args");

        private static final org.apache.thrift.protocol.TField KEY_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "key", org.apache.thrift.protocol.TType.STRING, (short) 1);
        private static final org.apache.thrift.protocol.TField CRITERIA_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "criteria", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.STRING,
                (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyCriteriaTimestr_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyCriteriaTimestr_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.lang.String key; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TCriteria criteria; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEY((short) 1, "key"),
            CRITERIA((short) 2, "criteria"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEY
                    return KEY;
                case 2: // CRITERIA
                    return CRITERIA;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEY,
                    new org.apache.thrift.meta_data.FieldMetaData("key",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CRITERIA,
                    new org.apache.thrift.meta_data.FieldMetaData("criteria",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TCriteria.class)));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyCriteriaTimestr_args.class, metaDataMap);
        }

        public navigateKeyCriteriaTimestr_args() {}

        public navigateKeyCriteriaTimestr_args(java.lang.String key,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.key = key;
            this.criteria = criteria;
            this.timestamp = timestamp;
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyCriteriaTimestr_args(
                navigateKeyCriteriaTimestr_args other) {
            if(other.isSetKey()) {
                this.key = other.key;
            }
            if(other.isSetCriteria()) {
                this.criteria = new com.cinchapi.concourse.thrift.TCriteria(
                        other.criteria);
            }
            if(other.isSetTimestamp()) {
                this.timestamp = other.timestamp;
            }
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeyCriteriaTimestr_args deepCopy() {
            return new navigateKeyCriteriaTimestr_args(this);
        }

        @Override
        public void clear() {
            this.key = null;
            this.criteria = null;
            this.timestamp = null;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getKey() {
            return this.key;
        }

        public navigateKeyCriteriaTimestr_args setKey(
                @org.apache.thrift.annotation.Nullable java.lang.String key) {
            this.key = key;
            return this;
        }

        public void unsetKey() {
            this.key = null;
        }

        /**
         * Returns true if field key is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKey() {
            return this.key != null;
        }

        public void setKeyIsSet(boolean value) {
            if(!value) {
                this.key = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TCriteria getCriteria() {
            return this.criteria;
        }

        public navigateKeyCriteriaTimestr_args setCriteria(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TCriteria criteria) {
            this.criteria = criteria;
            return this;
        }

        public void unsetCriteria() {
            this.criteria = null;
        }

        /**
         * Returns true if field criteria is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCriteria() {
            return this.criteria != null;
        }

        public void setCriteriaIsSet(boolean value) {
            if(!value) {
                this.criteria = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getTimestamp() {
            return this.timestamp;
        }

        public navigateKeyCriteriaTimestr_args setTimestamp(
                @org.apache.thrift.annotation.Nullable java.lang.String timestamp) {
            this.timestamp = timestamp;
            return this;
        }

        public void unsetTimestamp() {
            this.timestamp = null;
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return this.timestamp != null;
        }

        public void setTimestampIsSet(boolean value) {
            if(!value) {
                this.timestamp = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeyCriteriaTimestr_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeyCriteriaTimestr_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeyCriteriaTimestr_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEY:
                if(value == null) {
                    unsetKey();
                }
                else {
                    setKey((java.lang.String) value);
                }
                break;

            case CRITERIA:
                if(value == null) {
                    unsetCriteria();
                }
                else {
                    setCriteria(
                            (com.cinchapi.concourse.thrift.TCriteria) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.String) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEY:
                return getKey();

            case CRITERIA:
                return getCriteria();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEY:
                return isSetKey();
            case CRITERIA:
                return isSetCriteria();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyCriteriaTimestr_args)
                return this.equals((navigateKeyCriteriaTimestr_args) that);
            return false;
        }

        public boolean equals(navigateKeyCriteriaTimestr_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_key = true && this.isSetKey();
            boolean that_present_key = true && that.isSetKey();
            if(this_present_key || that_present_key) {
                if(!(this_present_key && that_present_key))
                    return false;
                if(!this.key.equals(that.key))
                    return false;
            }

            boolean this_present_criteria = true && this.isSetCriteria();
            boolean that_present_criteria = true && that.isSetCriteria();
            if(this_present_criteria || that_present_criteria) {
                if(!(this_present_criteria && that_present_criteria))
                    return false;
                if(!this.criteria.equals(that.criteria))
                    return false;
            }

            boolean this_present_timestamp = true && this.isSetTimestamp();
            boolean that_present_timestamp = true && that.isSetTimestamp();
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(!this.timestamp.equals(that.timestamp))
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKey()) ? 131071 : 524287);
            if(isSetKey())
                hashCode = hashCode * 8191 + key.hashCode();

            hashCode = hashCode * 8191 + ((isSetCriteria()) ? 131071 : 524287);
            if(isSetCriteria())
                hashCode = hashCode * 8191 + criteria.hashCode();

            hashCode = hashCode * 8191 + ((isSetTimestamp()) ? 131071 : 524287);
            if(isSetTimestamp())
                hashCode = hashCode * 8191 + timestamp.hashCode();

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyCriteriaTimestr_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKey())
                    .compareTo(other.isSetKey());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKey()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.key, other.key);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCriteria())
                    .compareTo(other.isSetCriteria());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCriteria()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.criteria, other.criteria);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyCriteriaTimestr_args(");
            boolean first = true;

            sb.append("key:");
            if(this.key == null) {
                sb.append("null");
            }
            else {
                sb.append(this.key);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("criteria:");
            if(this.criteria == null) {
                sb.append("null");
            }
            else {
                sb.append(this.criteria);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            if(this.timestamp == null) {
                sb.append("null");
            }
            else {
                sb.append(this.timestamp);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(criteria != null) {
                criteria.validate();
            }
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyCriteriaTimestr_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCriteriaTimestr_argsStandardScheme getScheme() {
                return new navigateKeyCriteriaTimestr_argsStandardScheme();
            }
        }

        private static class navigateKeyCriteriaTimestr_argsStandardScheme
                extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyCriteriaTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEY
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.key = iprot.readString();
                            struct.setKeyIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // CRITERIA
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.criteria = new com.cinchapi.concourse.thrift.TCriteria();
                            struct.criteria.read(iprot);
                            struct.setCriteriaIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.timestamp = iprot.readString();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyCriteriaTimestr_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.key != null) {
                    oprot.writeFieldBegin(KEY_FIELD_DESC);
                    oprot.writeString(struct.key);
                    oprot.writeFieldEnd();
                }
                if(struct.criteria != null) {
                    oprot.writeFieldBegin(CRITERIA_FIELD_DESC);
                    struct.criteria.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.timestamp != null) {
                    oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                    oprot.writeString(struct.timestamp);
                    oprot.writeFieldEnd();
                }
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyCriteriaTimestr_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCriteriaTimestr_argsTupleScheme getScheme() {
                return new navigateKeyCriteriaTimestr_argsTupleScheme();
            }
        }

        private static class navigateKeyCriteriaTimestr_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCriteriaTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKey()) {
                    optionals.set(0);
                }
                if(struct.isSetCriteria()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKey()) {
                    oprot.writeString(struct.key);
                }
                if(struct.isSetCriteria()) {
                    struct.criteria.write(oprot);
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeString(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCriteriaTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    struct.key = iprot.readString();
                    struct.setKeyIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.criteria = new com.cinchapi.concourse.thrift.TCriteria();
                    struct.criteria.read(iprot);
                    struct.setCriteriaIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readString();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeyCriteriaTimestr_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeyCriteriaTimestr_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeyCriteriaTimestr_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeyCriteriaTimestr_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.SetMetaData(
                                            org.apache.thrift.protocol.TType.SET,
                                            new org.apache.thrift.meta_data.StructMetaData(
                                                    org.apache.thrift.protocol.TType.STRUCT,
                                                    com.cinchapi.concourse.thrift.TObject.class)))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeyCriteriaTimestr_result.class, metaDataMap);
        }

        public navigateKeyCriteriaTimestr_result() {}

        public navigateKeyCriteriaTimestr_result(
                java.util.Map> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeyCriteriaTimestr_result(
                navigateKeyCriteriaTimestr_result other) {
            if(other.isSetSuccess()) {
                java.util.Map> __this__success = new java.util.LinkedHashMap>(
                        other.success.size());
                for (java.util.Map.Entry> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Set other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Set __this__success_copy_value = new java.util.LinkedHashSet(
                            other_element_value.size());
                    for (com.cinchapi.concourse.thrift.TObject other_element_value_element : other_element_value) {
                        __this__success_copy_value
                                .add(new com.cinchapi.concourse.thrift.TObject(
                                        other_element_value_element));
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeyCriteriaTimestr_result deepCopy() {
            return new navigateKeyCriteriaTimestr_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Set val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map> getSuccess() {
            return this.success;
        }

        public navigateKeyCriteriaTimestr_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeyCriteriaTimestr_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeyCriteriaTimestr_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeyCriteriaTimestr_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeyCriteriaTimestr_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeyCriteriaTimestr_result)
                return this.equals((navigateKeyCriteriaTimestr_result) that);
            return false;
        }

        public boolean equals(navigateKeyCriteriaTimestr_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeyCriteriaTimestr_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeyCriteriaTimestr_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeyCriteriaTimestr_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCriteriaTimestr_resultStandardScheme getScheme() {
                return new navigateKeyCriteriaTimestr_resultStandardScheme();
            }
        }

        private static class navigateKeyCriteriaTimestr_resultStandardScheme
                extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeyCriteriaTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map570 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>(
                                        2 * _map570.size);
                                long _key571;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val572;
                                for (int _i573 = 0; _i573 < _map570.size; ++_i573) {
                                    _key571 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TSet _set574 = iprot
                                                .readSetBegin();
                                        _val572 = new java.util.LinkedHashSet(
                                                2 * _set574.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem575;
                                        for (int _i576 = 0; _i576 < _set574.size; ++_i576) {
                                            _elem575 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem575.read(iprot);
                                            _val572.add(_elem575);
                                        }
                                        iprot.readSetEnd();
                                    }
                                    struct.success.put(_key571, _val572);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeyCriteriaTimestr_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                struct.success.size()));
                        for (java.util.Map.Entry> _iter577 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter577.getKey());
                            {
                                oprot.writeSetBegin(
                                        new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                _iter577.getValue().size()));
                                for (com.cinchapi.concourse.thrift.TObject _iter578 : _iter577
                                        .getValue()) {
                                    _iter578.write(oprot);
                                }
                                oprot.writeSetEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeyCriteriaTimestr_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeyCriteriaTimestr_resultTupleScheme getScheme() {
                return new navigateKeyCriteriaTimestr_resultTupleScheme();
            }
        }

        private static class navigateKeyCriteriaTimestr_resultTupleScheme
                extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCriteriaTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry> _iter579 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter579.getKey());
                            {
                                oprot.writeI32(_iter579.getValue().size());
                                for (com.cinchapi.concourse.thrift.TObject _iter580 : _iter579
                                        .getValue()) {
                                    _iter580.write(oprot);
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeyCriteriaTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map581 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.SET,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>(
                                2 * _map581.size);
                        long _key582;
                        @org.apache.thrift.annotation.Nullable java.util.Set _val583;
                        for (int _i584 = 0; _i584 < _map581.size; ++_i584) {
                            _key582 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TSet _set585 = new org.apache.thrift.protocol.TSet(
                                        org.apache.thrift.protocol.TType.STRUCT,
                                        iprot.readI32());
                                _val583 = new java.util.LinkedHashSet(
                                        2 * _set585.size);
                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem586;
                                for (int _i587 = 0; _i587 < _set585.size; ++_i587) {
                                    _elem586 = new com.cinchapi.concourse.thrift.TObject();
                                    _elem586.read(iprot);
                                    _val583.add(_elem586);
                                }
                            }
                            struct.success.put(_key582, _val583);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysCriteria_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysCriteria_args");

        private static final org.apache.thrift.protocol.TField KEYS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "keys", org.apache.thrift.protocol.TType.LIST, (short) 1);
        private static final org.apache.thrift.protocol.TField CRITERIA_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "criteria", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 4);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 5);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysCriteria_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysCriteria_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.List keys; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TCriteria criteria; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEYS((short) 1, "keys"),
            CRITERIA((short) 2, "criteria"),
            CREDS((short) 3, "creds"),
            TRANSACTION((short) 4, "transaction"),
            ENVIRONMENT((short) 5, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEYS
                    return KEYS;
                case 2: // CRITERIA
                    return CRITERIA;
                case 3: // CREDS
                    return CREDS;
                case 4: // TRANSACTION
                    return TRANSACTION;
                case 5: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEYS,
                    new org.apache.thrift.meta_data.FieldMetaData("keys",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.STRING))));
            tmpMap.put(_Fields.CRITERIA,
                    new org.apache.thrift.meta_data.FieldMetaData("criteria",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TCriteria.class)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysCriteria_args.class, metaDataMap);
        }

        public navigateKeysCriteria_args() {}

        public navigateKeysCriteria_args(java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.keys = keys;
            this.criteria = criteria;
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysCriteria_args(navigateKeysCriteria_args other) {
            if(other.isSetKeys()) {
                java.util.List __this__keys = new java.util.ArrayList(
                        other.keys);
                this.keys = __this__keys;
            }
            if(other.isSetCriteria()) {
                this.criteria = new com.cinchapi.concourse.thrift.TCriteria(
                        other.criteria);
            }
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeysCriteria_args deepCopy() {
            return new navigateKeysCriteria_args(this);
        }

        @Override
        public void clear() {
            this.keys = null;
            this.criteria = null;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        public int getKeysSize() {
            return (this.keys == null) ? 0 : this.keys.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getKeysIterator() {
            return (this.keys == null) ? null : this.keys.iterator();
        }

        public void addToKeys(java.lang.String elem) {
            if(this.keys == null) {
                this.keys = new java.util.ArrayList();
            }
            this.keys.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getKeys() {
            return this.keys;
        }

        public navigateKeysCriteria_args setKeys(
                @org.apache.thrift.annotation.Nullable java.util.List keys) {
            this.keys = keys;
            return this;
        }

        public void unsetKeys() {
            this.keys = null;
        }

        /**
         * Returns true if field keys is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKeys() {
            return this.keys != null;
        }

        public void setKeysIsSet(boolean value) {
            if(!value) {
                this.keys = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TCriteria getCriteria() {
            return this.criteria;
        }

        public navigateKeysCriteria_args setCriteria(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TCriteria criteria) {
            this.criteria = criteria;
            return this;
        }

        public void unsetCriteria() {
            this.criteria = null;
        }

        /**
         * Returns true if field criteria is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCriteria() {
            return this.criteria != null;
        }

        public void setCriteriaIsSet(boolean value) {
            if(!value) {
                this.criteria = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeysCriteria_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeysCriteria_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeysCriteria_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEYS:
                if(value == null) {
                    unsetKeys();
                }
                else {
                    setKeys((java.util.List) value);
                }
                break;

            case CRITERIA:
                if(value == null) {
                    unsetCriteria();
                }
                else {
                    setCriteria(
                            (com.cinchapi.concourse.thrift.TCriteria) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEYS:
                return getKeys();

            case CRITERIA:
                return getCriteria();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEYS:
                return isSetKeys();
            case CRITERIA:
                return isSetCriteria();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysCriteria_args)
                return this.equals((navigateKeysCriteria_args) that);
            return false;
        }

        public boolean equals(navigateKeysCriteria_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_keys = true && this.isSetKeys();
            boolean that_present_keys = true && that.isSetKeys();
            if(this_present_keys || that_present_keys) {
                if(!(this_present_keys && that_present_keys))
                    return false;
                if(!this.keys.equals(that.keys))
                    return false;
            }

            boolean this_present_criteria = true && this.isSetCriteria();
            boolean that_present_criteria = true && that.isSetCriteria();
            if(this_present_criteria || that_present_criteria) {
                if(!(this_present_criteria && that_present_criteria))
                    return false;
                if(!this.criteria.equals(that.criteria))
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKeys()) ? 131071 : 524287);
            if(isSetKeys())
                hashCode = hashCode * 8191 + keys.hashCode();

            hashCode = hashCode * 8191 + ((isSetCriteria()) ? 131071 : 524287);
            if(isSetCriteria())
                hashCode = hashCode * 8191 + criteria.hashCode();

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysCriteria_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKeys())
                    .compareTo(other.isSetKeys());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKeys()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.keys, other.keys);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCriteria())
                    .compareTo(other.isSetCriteria());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCriteria()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.criteria, other.criteria);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysCriteria_args(");
            boolean first = true;

            sb.append("keys:");
            if(this.keys == null) {
                sb.append("null");
            }
            else {
                sb.append(this.keys);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("criteria:");
            if(this.criteria == null) {
                sb.append("null");
            }
            else {
                sb.append(this.criteria);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(criteria != null) {
                criteria.validate();
            }
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysCriteria_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCriteria_argsStandardScheme getScheme() {
                return new navigateKeysCriteria_argsStandardScheme();
            }
        }

        private static class navigateKeysCriteria_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysCriteria_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEYS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list588 = iprot
                                        .readListBegin();
                                struct.keys = new java.util.ArrayList(
                                        _list588.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _elem589;
                                for (int _i590 = 0; _i590 < _list588.size; ++_i590) {
                                    _elem589 = iprot.readString();
                                    struct.keys.add(_elem589);
                                }
                                iprot.readListEnd();
                            }
                            struct.setKeysIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // CRITERIA
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.criteria = new com.cinchapi.concourse.thrift.TCriteria();
                            struct.criteria.read(iprot);
                            struct.setCriteriaIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysCriteria_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.keys != null) {
                    oprot.writeFieldBegin(KEYS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.STRING,
                                        struct.keys.size()));
                        for (java.lang.String _iter591 : struct.keys) {
                            oprot.writeString(_iter591);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.criteria != null) {
                    oprot.writeFieldBegin(CRITERIA_FIELD_DESC);
                    struct.criteria.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysCriteria_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCriteria_argsTupleScheme getScheme() {
                return new navigateKeysCriteria_argsTupleScheme();
            }
        }

        private static class navigateKeysCriteria_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCriteria_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKeys()) {
                    optionals.set(0);
                }
                if(struct.isSetCriteria()) {
                    optionals.set(1);
                }
                if(struct.isSetCreds()) {
                    optionals.set(2);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(3);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetKeys()) {
                    {
                        oprot.writeI32(struct.keys.size());
                        for (java.lang.String _iter592 : struct.keys) {
                            oprot.writeString(_iter592);
                        }
                    }
                }
                if(struct.isSetCriteria()) {
                    struct.criteria.write(oprot);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCriteria_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TList _list593 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.STRING,
                                iprot.readI32());
                        struct.keys = new java.util.ArrayList(
                                _list593.size);
                        @org.apache.thrift.annotation.Nullable java.lang.String _elem594;
                        for (int _i595 = 0; _i595 < _list593.size; ++_i595) {
                            _elem594 = iprot.readString();
                            struct.keys.add(_elem594);
                        }
                    }
                    struct.setKeysIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.criteria = new com.cinchapi.concourse.thrift.TCriteria();
                    struct.criteria.read(iprot);
                    struct.setCriteriaIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysCriteria_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysCriteria_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysCriteria_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysCriteria_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map>> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.MapMetaData(
                                            org.apache.thrift.protocol.TType.MAP,
                                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                                    org.apache.thrift.protocol.TType.STRING),
                                            new org.apache.thrift.meta_data.SetMetaData(
                                                    org.apache.thrift.protocol.TType.SET,
                                                    new org.apache.thrift.meta_data.StructMetaData(
                                                            org.apache.thrift.protocol.TType.STRUCT,
                                                            com.cinchapi.concourse.thrift.TObject.class))))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysCriteria_result.class, metaDataMap);
        }

        public navigateKeysCriteria_result() {}

        public navigateKeysCriteria_result(
                java.util.Map>> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysCriteria_result(navigateKeysCriteria_result other) {
            if(other.isSetSuccess()) {
                java.util.Map>> __this__success = new java.util.LinkedHashMap>>(
                        other.success.size());
                for (java.util.Map.Entry>> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Map> other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Map> __this__success_copy_value = new java.util.LinkedHashMap>(
                            other_element_value.size());
                    for (java.util.Map.Entry> other_element_value_element : other_element_value
                            .entrySet()) {

                        java.lang.String other_element_value_element_key = other_element_value_element
                                .getKey();
                        java.util.Set other_element_value_element_value = other_element_value_element
                                .getValue();

                        java.lang.String __this__success_copy_value_copy_key = other_element_value_element_key;

                        java.util.Set __this__success_copy_value_copy_value = new java.util.LinkedHashSet(
                                other_element_value_element_value.size());
                        for (com.cinchapi.concourse.thrift.TObject other_element_value_element_value_element : other_element_value_element_value) {
                            __this__success_copy_value_copy_value
                                    .add(new com.cinchapi.concourse.thrift.TObject(
                                            other_element_value_element_value_element));
                        }

                        __this__success_copy_value.put(
                                __this__success_copy_value_copy_key,
                                __this__success_copy_value_copy_value);
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeysCriteria_result deepCopy() {
            return new navigateKeysCriteria_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Map> val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map>> getSuccess() {
            return this.success;
        }

        public navigateKeysCriteria_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map>> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeysCriteria_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeysCriteria_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeysCriteria_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeysCriteria_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysCriteria_result)
                return this.equals((navigateKeysCriteria_result) that);
            return false;
        }

        public boolean equals(navigateKeysCriteria_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysCriteria_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysCriteria_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysCriteria_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCriteria_resultStandardScheme getScheme() {
                return new navigateKeysCriteria_resultStandardScheme();
            }
        }

        private static class navigateKeysCriteria_resultStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysCriteria_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map596 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>>(
                                        2 * _map596.size);
                                long _key597;
                                @org.apache.thrift.annotation.Nullable java.util.Map> _val598;
                                for (int _i599 = 0; _i599 < _map596.size; ++_i599) {
                                    _key597 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TMap _map600 = iprot
                                                .readMapBegin();
                                        _val598 = new java.util.LinkedHashMap>(
                                                2 * _map600.size);
                                        @org.apache.thrift.annotation.Nullable java.lang.String _key601;
                                        @org.apache.thrift.annotation.Nullable java.util.Set _val602;
                                        for (int _i603 = 0; _i603 < _map600.size; ++_i603) {
                                            _key601 = iprot.readString();
                                            {
                                                org.apache.thrift.protocol.TSet _set604 = iprot
                                                        .readSetBegin();
                                                _val602 = new java.util.LinkedHashSet(
                                                        2 * _set604.size);
                                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem605;
                                                for (int _i606 = 0; _i606 < _set604.size; ++_i606) {
                                                    _elem605 = new com.cinchapi.concourse.thrift.TObject();
                                                    _elem605.read(iprot);
                                                    _val602.add(_elem605);
                                                }
                                                iprot.readSetEnd();
                                            }
                                            _val598.put(_key601, _val602);
                                        }
                                        iprot.readMapEnd();
                                    }
                                    struct.success.put(_key597, _val598);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysCriteria_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                struct.success.size()));
                        for (java.util.Map.Entry>> _iter607 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter607.getKey());
                            {
                                oprot.writeMapBegin(
                                        new org.apache.thrift.protocol.TMap(
                                                org.apache.thrift.protocol.TType.STRING,
                                                org.apache.thrift.protocol.TType.SET,
                                                _iter607.getValue().size()));
                                for (java.util.Map.Entry> _iter608 : _iter607
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter608.getKey());
                                    {
                                        oprot.writeSetBegin(
                                                new org.apache.thrift.protocol.TSet(
                                                        org.apache.thrift.protocol.TType.STRUCT,
                                                        _iter608.getValue()
                                                                .size()));
                                        for (com.cinchapi.concourse.thrift.TObject _iter609 : _iter608
                                                .getValue()) {
                                            _iter609.write(oprot);
                                        }
                                        oprot.writeSetEnd();
                                    }
                                }
                                oprot.writeMapEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysCriteria_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCriteria_resultTupleScheme getScheme() {
                return new navigateKeysCriteria_resultTupleScheme();
            }
        }

        private static class navigateKeysCriteria_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCriteria_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry>> _iter610 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter610.getKey());
                            {
                                oprot.writeI32(_iter610.getValue().size());
                                for (java.util.Map.Entry> _iter611 : _iter610
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter611.getKey());
                                    {
                                        oprot.writeI32(
                                                _iter611.getValue().size());
                                        for (com.cinchapi.concourse.thrift.TObject _iter612 : _iter611
                                                .getValue()) {
                                            _iter612.write(oprot);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCriteria_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map613 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>>(
                                2 * _map613.size);
                        long _key614;
                        @org.apache.thrift.annotation.Nullable java.util.Map> _val615;
                        for (int _i616 = 0; _i616 < _map613.size; ++_i616) {
                            _key614 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TMap _map617 = new org.apache.thrift.protocol.TMap(
                                        org.apache.thrift.protocol.TType.STRING,
                                        org.apache.thrift.protocol.TType.SET,
                                        iprot.readI32());
                                _val615 = new java.util.LinkedHashMap>(
                                        2 * _map617.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _key618;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val619;
                                for (int _i620 = 0; _i620 < _map617.size; ++_i620) {
                                    _key618 = iprot.readString();
                                    {
                                        org.apache.thrift.protocol.TSet _set621 = new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                iprot.readI32());
                                        _val619 = new java.util.LinkedHashSet(
                                                2 * _set621.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem622;
                                        for (int _i623 = 0; _i623 < _set621.size; ++_i623) {
                                            _elem622 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem622.read(iprot);
                                            _val619.add(_elem622);
                                        }
                                    }
                                    _val615.put(_key618, _val619);
                                }
                            }
                            struct.success.put(_key614, _val615);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysCriteriaTime_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysCriteriaTime_args");

        private static final org.apache.thrift.protocol.TField KEYS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "keys", org.apache.thrift.protocol.TType.LIST, (short) 1);
        private static final org.apache.thrift.protocol.TField CRITERIA_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "criteria", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.I64, (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysCriteriaTime_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysCriteriaTime_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.List keys; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TCriteria criteria; // required
        public long timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEYS((short) 1, "keys"),
            CRITERIA((short) 2, "criteria"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEYS
                    return KEYS;
                case 2: // CRITERIA
                    return CRITERIA;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        private static final int __TIMESTAMP_ISSET_ID = 0;
        private byte __isset_bitfield = 0;
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEYS,
                    new org.apache.thrift.meta_data.FieldMetaData("keys",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.STRING))));
            tmpMap.put(_Fields.CRITERIA,
                    new org.apache.thrift.meta_data.FieldMetaData("criteria",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TCriteria.class)));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.I64)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysCriteriaTime_args.class, metaDataMap);
        }

        public navigateKeysCriteriaTime_args() {}

        public navigateKeysCriteriaTime_args(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                long timestamp, com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.keys = keys;
            this.criteria = criteria;
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysCriteriaTime_args(
                navigateKeysCriteriaTime_args other) {
            __isset_bitfield = other.__isset_bitfield;
            if(other.isSetKeys()) {
                java.util.List __this__keys = new java.util.ArrayList(
                        other.keys);
                this.keys = __this__keys;
            }
            if(other.isSetCriteria()) {
                this.criteria = new com.cinchapi.concourse.thrift.TCriteria(
                        other.criteria);
            }
            this.timestamp = other.timestamp;
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeysCriteriaTime_args deepCopy() {
            return new navigateKeysCriteriaTime_args(this);
        }

        @Override
        public void clear() {
            this.keys = null;
            this.criteria = null;
            setTimestampIsSet(false);
            this.timestamp = 0;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        public int getKeysSize() {
            return (this.keys == null) ? 0 : this.keys.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getKeysIterator() {
            return (this.keys == null) ? null : this.keys.iterator();
        }

        public void addToKeys(java.lang.String elem) {
            if(this.keys == null) {
                this.keys = new java.util.ArrayList();
            }
            this.keys.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getKeys() {
            return this.keys;
        }

        public navigateKeysCriteriaTime_args setKeys(
                @org.apache.thrift.annotation.Nullable java.util.List keys) {
            this.keys = keys;
            return this;
        }

        public void unsetKeys() {
            this.keys = null;
        }

        /**
         * Returns true if field keys is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKeys() {
            return this.keys != null;
        }

        public void setKeysIsSet(boolean value) {
            if(!value) {
                this.keys = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TCriteria getCriteria() {
            return this.criteria;
        }

        public navigateKeysCriteriaTime_args setCriteria(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TCriteria criteria) {
            this.criteria = criteria;
            return this;
        }

        public void unsetCriteria() {
            this.criteria = null;
        }

        /**
         * Returns true if field criteria is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCriteria() {
            return this.criteria != null;
        }

        public void setCriteriaIsSet(boolean value) {
            if(!value) {
                this.criteria = null;
            }
        }

        public long getTimestamp() {
            return this.timestamp;
        }

        public navigateKeysCriteriaTime_args setTimestamp(long timestamp) {
            this.timestamp = timestamp;
            setTimestampIsSet(true);
            return this;
        }

        public void unsetTimestamp() {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .clearBit(__isset_bitfield, __TIMESTAMP_ISSET_ID);
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield,
                    __TIMESTAMP_ISSET_ID);
        }

        public void setTimestampIsSet(boolean value) {
            __isset_bitfield = org.apache.thrift.EncodingUtils
                    .setBit(__isset_bitfield, __TIMESTAMP_ISSET_ID, value);
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeysCriteriaTime_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeysCriteriaTime_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeysCriteriaTime_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEYS:
                if(value == null) {
                    unsetKeys();
                }
                else {
                    setKeys((java.util.List) value);
                }
                break;

            case CRITERIA:
                if(value == null) {
                    unsetCriteria();
                }
                else {
                    setCriteria(
                            (com.cinchapi.concourse.thrift.TCriteria) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.Long) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEYS:
                return getKeys();

            case CRITERIA:
                return getCriteria();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEYS:
                return isSetKeys();
            case CRITERIA:
                return isSetCriteria();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysCriteriaTime_args)
                return this.equals((navigateKeysCriteriaTime_args) that);
            return false;
        }

        public boolean equals(navigateKeysCriteriaTime_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_keys = true && this.isSetKeys();
            boolean that_present_keys = true && that.isSetKeys();
            if(this_present_keys || that_present_keys) {
                if(!(this_present_keys && that_present_keys))
                    return false;
                if(!this.keys.equals(that.keys))
                    return false;
            }

            boolean this_present_criteria = true && this.isSetCriteria();
            boolean that_present_criteria = true && that.isSetCriteria();
            if(this_present_criteria || that_present_criteria) {
                if(!(this_present_criteria && that_present_criteria))
                    return false;
                if(!this.criteria.equals(that.criteria))
                    return false;
            }

            boolean this_present_timestamp = true;
            boolean that_present_timestamp = true;
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(this.timestamp != that.timestamp)
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKeys()) ? 131071 : 524287);
            if(isSetKeys())
                hashCode = hashCode * 8191 + keys.hashCode();

            hashCode = hashCode * 8191 + ((isSetCriteria()) ? 131071 : 524287);
            if(isSetCriteria())
                hashCode = hashCode * 8191 + criteria.hashCode();

            hashCode = hashCode * 8191
                    + org.apache.thrift.TBaseHelper.hashCode(timestamp);

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysCriteriaTime_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKeys())
                    .compareTo(other.isSetKeys());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKeys()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.keys, other.keys);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCriteria())
                    .compareTo(other.isSetCriteria());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCriteria()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.criteria, other.criteria);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysCriteriaTime_args(");
            boolean first = true;

            sb.append("keys:");
            if(this.keys == null) {
                sb.append("null");
            }
            else {
                sb.append(this.keys);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("criteria:");
            if(this.criteria == null) {
                sb.append("null");
            }
            else {
                sb.append(this.criteria);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            sb.append(this.timestamp);
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(criteria != null) {
                criteria.validate();
            }
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                // it doesn't seem like you should have to do this, but java
                // serialization is wacky, and doesn't call the default
                // constructor.
                __isset_bitfield = 0;
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysCriteriaTime_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCriteriaTime_argsStandardScheme getScheme() {
                return new navigateKeysCriteriaTime_argsStandardScheme();
            }
        }

        private static class navigateKeysCriteriaTime_argsStandardScheme extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysCriteriaTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEYS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list624 = iprot
                                        .readListBegin();
                                struct.keys = new java.util.ArrayList(
                                        _list624.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _elem625;
                                for (int _i626 = 0; _i626 < _list624.size; ++_i626) {
                                    _elem625 = iprot.readString();
                                    struct.keys.add(_elem625);
                                }
                                iprot.readListEnd();
                            }
                            struct.setKeysIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // CRITERIA
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.criteria = new com.cinchapi.concourse.thrift.TCriteria();
                            struct.criteria.read(iprot);
                            struct.setCriteriaIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.I64) {
                            struct.timestamp = iprot.readI64();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysCriteriaTime_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.keys != null) {
                    oprot.writeFieldBegin(KEYS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.STRING,
                                        struct.keys.size()));
                        for (java.lang.String _iter627 : struct.keys) {
                            oprot.writeString(_iter627);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.criteria != null) {
                    oprot.writeFieldBegin(CRITERIA_FIELD_DESC);
                    struct.criteria.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                oprot.writeI64(struct.timestamp);
                oprot.writeFieldEnd();
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysCriteriaTime_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCriteriaTime_argsTupleScheme getScheme() {
                return new navigateKeysCriteriaTime_argsTupleScheme();
            }
        }

        private static class navigateKeysCriteriaTime_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCriteriaTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKeys()) {
                    optionals.set(0);
                }
                if(struct.isSetCriteria()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKeys()) {
                    {
                        oprot.writeI32(struct.keys.size());
                        for (java.lang.String _iter628 : struct.keys) {
                            oprot.writeString(_iter628);
                        }
                    }
                }
                if(struct.isSetCriteria()) {
                    struct.criteria.write(oprot);
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeI64(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCriteriaTime_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TList _list629 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.STRING,
                                iprot.readI32());
                        struct.keys = new java.util.ArrayList(
                                _list629.size);
                        @org.apache.thrift.annotation.Nullable java.lang.String _elem630;
                        for (int _i631 = 0; _i631 < _list629.size; ++_i631) {
                            _elem630 = iprot.readString();
                            struct.keys.add(_elem630);
                        }
                    }
                    struct.setKeysIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.criteria = new com.cinchapi.concourse.thrift.TCriteria();
                    struct.criteria.read(iprot);
                    struct.setCriteriaIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readI64();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysCriteriaTime_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysCriteriaTime_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysCriteriaTime_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysCriteriaTime_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map>> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.MapMetaData(
                                            org.apache.thrift.protocol.TType.MAP,
                                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                                    org.apache.thrift.protocol.TType.STRING),
                                            new org.apache.thrift.meta_data.SetMetaData(
                                                    org.apache.thrift.protocol.TType.SET,
                                                    new org.apache.thrift.meta_data.StructMetaData(
                                                            org.apache.thrift.protocol.TType.STRUCT,
                                                            com.cinchapi.concourse.thrift.TObject.class))))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysCriteriaTime_result.class, metaDataMap);
        }

        public navigateKeysCriteriaTime_result() {}

        public navigateKeysCriteriaTime_result(
                java.util.Map>> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysCriteriaTime_result(
                navigateKeysCriteriaTime_result other) {
            if(other.isSetSuccess()) {
                java.util.Map>> __this__success = new java.util.LinkedHashMap>>(
                        other.success.size());
                for (java.util.Map.Entry>> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Map> other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Map> __this__success_copy_value = new java.util.LinkedHashMap>(
                            other_element_value.size());
                    for (java.util.Map.Entry> other_element_value_element : other_element_value
                            .entrySet()) {

                        java.lang.String other_element_value_element_key = other_element_value_element
                                .getKey();
                        java.util.Set other_element_value_element_value = other_element_value_element
                                .getValue();

                        java.lang.String __this__success_copy_value_copy_key = other_element_value_element_key;

                        java.util.Set __this__success_copy_value_copy_value = new java.util.LinkedHashSet(
                                other_element_value_element_value.size());
                        for (com.cinchapi.concourse.thrift.TObject other_element_value_element_value_element : other_element_value_element_value) {
                            __this__success_copy_value_copy_value
                                    .add(new com.cinchapi.concourse.thrift.TObject(
                                            other_element_value_element_value_element));
                        }

                        __this__success_copy_value.put(
                                __this__success_copy_value_copy_key,
                                __this__success_copy_value_copy_value);
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeysCriteriaTime_result deepCopy() {
            return new navigateKeysCriteriaTime_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Map> val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map>> getSuccess() {
            return this.success;
        }

        public navigateKeysCriteriaTime_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map>> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeysCriteriaTime_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeysCriteriaTime_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeysCriteriaTime_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeysCriteriaTime_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysCriteriaTime_result)
                return this.equals((navigateKeysCriteriaTime_result) that);
            return false;
        }

        public boolean equals(navigateKeysCriteriaTime_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysCriteriaTime_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysCriteriaTime_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysCriteriaTime_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCriteriaTime_resultStandardScheme getScheme() {
                return new navigateKeysCriteriaTime_resultStandardScheme();
            }
        }

        private static class navigateKeysCriteriaTime_resultStandardScheme
                extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysCriteriaTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map632 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>>(
                                        2 * _map632.size);
                                long _key633;
                                @org.apache.thrift.annotation.Nullable java.util.Map> _val634;
                                for (int _i635 = 0; _i635 < _map632.size; ++_i635) {
                                    _key633 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TMap _map636 = iprot
                                                .readMapBegin();
                                        _val634 = new java.util.LinkedHashMap>(
                                                2 * _map636.size);
                                        @org.apache.thrift.annotation.Nullable java.lang.String _key637;
                                        @org.apache.thrift.annotation.Nullable java.util.Set _val638;
                                        for (int _i639 = 0; _i639 < _map636.size; ++_i639) {
                                            _key637 = iprot.readString();
                                            {
                                                org.apache.thrift.protocol.TSet _set640 = iprot
                                                        .readSetBegin();
                                                _val638 = new java.util.LinkedHashSet(
                                                        2 * _set640.size);
                                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem641;
                                                for (int _i642 = 0; _i642 < _set640.size; ++_i642) {
                                                    _elem641 = new com.cinchapi.concourse.thrift.TObject();
                                                    _elem641.read(iprot);
                                                    _val638.add(_elem641);
                                                }
                                                iprot.readSetEnd();
                                            }
                                            _val634.put(_key637, _val638);
                                        }
                                        iprot.readMapEnd();
                                    }
                                    struct.success.put(_key633, _val634);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysCriteriaTime_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                struct.success.size()));
                        for (java.util.Map.Entry>> _iter643 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter643.getKey());
                            {
                                oprot.writeMapBegin(
                                        new org.apache.thrift.protocol.TMap(
                                                org.apache.thrift.protocol.TType.STRING,
                                                org.apache.thrift.protocol.TType.SET,
                                                _iter643.getValue().size()));
                                for (java.util.Map.Entry> _iter644 : _iter643
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter644.getKey());
                                    {
                                        oprot.writeSetBegin(
                                                new org.apache.thrift.protocol.TSet(
                                                        org.apache.thrift.protocol.TType.STRUCT,
                                                        _iter644.getValue()
                                                                .size()));
                                        for (com.cinchapi.concourse.thrift.TObject _iter645 : _iter644
                                                .getValue()) {
                                            _iter645.write(oprot);
                                        }
                                        oprot.writeSetEnd();
                                    }
                                }
                                oprot.writeMapEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysCriteriaTime_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCriteriaTime_resultTupleScheme getScheme() {
                return new navigateKeysCriteriaTime_resultTupleScheme();
            }
        }

        private static class navigateKeysCriteriaTime_resultTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCriteriaTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry>> _iter646 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter646.getKey());
                            {
                                oprot.writeI32(_iter646.getValue().size());
                                for (java.util.Map.Entry> _iter647 : _iter646
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter647.getKey());
                                    {
                                        oprot.writeI32(
                                                _iter647.getValue().size());
                                        for (com.cinchapi.concourse.thrift.TObject _iter648 : _iter647
                                                .getValue()) {
                                            _iter648.write(oprot);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCriteriaTime_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map649 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>>(
                                2 * _map649.size);
                        long _key650;
                        @org.apache.thrift.annotation.Nullable java.util.Map> _val651;
                        for (int _i652 = 0; _i652 < _map649.size; ++_i652) {
                            _key650 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TMap _map653 = new org.apache.thrift.protocol.TMap(
                                        org.apache.thrift.protocol.TType.STRING,
                                        org.apache.thrift.protocol.TType.SET,
                                        iprot.readI32());
                                _val651 = new java.util.LinkedHashMap>(
                                        2 * _map653.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _key654;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val655;
                                for (int _i656 = 0; _i656 < _map653.size; ++_i656) {
                                    _key654 = iprot.readString();
                                    {
                                        org.apache.thrift.protocol.TSet _set657 = new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                iprot.readI32());
                                        _val655 = new java.util.LinkedHashSet(
                                                2 * _set657.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem658;
                                        for (int _i659 = 0; _i659 < _set657.size; ++_i659) {
                                            _elem658 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem658.read(iprot);
                                            _val655.add(_elem658);
                                        }
                                    }
                                    _val651.put(_key654, _val655);
                                }
                            }
                            struct.success.put(_key650, _val651);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysCriteriaTimestr_args implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysCriteriaTimestr_args");

        private static final org.apache.thrift.protocol.TField KEYS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "keys", org.apache.thrift.protocol.TType.LIST, (short) 1);
        private static final org.apache.thrift.protocol.TField CRITERIA_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "criteria", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "timestamp", org.apache.thrift.protocol.TType.STRING,
                (short) 3);
        private static final org.apache.thrift.protocol.TField CREDS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "creds", org.apache.thrift.protocol.TType.STRUCT, (short) 4);
        private static final org.apache.thrift.protocol.TField TRANSACTION_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "transaction", org.apache.thrift.protocol.TType.STRUCT,
                (short) 5);
        private static final org.apache.thrift.protocol.TField ENVIRONMENT_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "environment", org.apache.thrift.protocol.TType.STRING,
                (short) 6);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysCriteriaTimestr_argsStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysCriteriaTimestr_argsTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.List keys; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TCriteria criteria; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String timestamp; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction; // required
        public @org.apache.thrift.annotation.Nullable java.lang.String environment; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            KEYS((short) 1, "keys"),
            CRITERIA((short) 2, "criteria"),
            TIMESTAMP((short) 3, "timestamp"),
            CREDS((short) 4, "creds"),
            TRANSACTION((short) 5, "transaction"),
            ENVIRONMENT((short) 6, "environment");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 1: // KEYS
                    return KEYS;
                case 2: // CRITERIA
                    return CRITERIA;
                case 3: // TIMESTAMP
                    return TIMESTAMP;
                case 4: // CREDS
                    return CREDS;
                case 5: // TRANSACTION
                    return TRANSACTION;
                case 6: // ENVIRONMENT
                    return ENVIRONMENT;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.KEYS,
                    new org.apache.thrift.meta_data.FieldMetaData("keys",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.ListMetaData(
                                    org.apache.thrift.protocol.TType.LIST,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.STRING))));
            tmpMap.put(_Fields.CRITERIA,
                    new org.apache.thrift.meta_data.FieldMetaData("criteria",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TCriteria.class)));
            tmpMap.put(_Fields.TIMESTAMP,
                    new org.apache.thrift.meta_data.FieldMetaData("timestamp",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            tmpMap.put(_Fields.CREDS,
                    new org.apache.thrift.meta_data.FieldMetaData("creds",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.AccessToken.class)));
            tmpMap.put(_Fields.TRANSACTION,
                    new org.apache.thrift.meta_data.FieldMetaData("transaction",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionToken.class)));
            tmpMap.put(_Fields.ENVIRONMENT,
                    new org.apache.thrift.meta_data.FieldMetaData("environment",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                    org.apache.thrift.protocol.TType.STRING)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysCriteriaTimestr_args.class, metaDataMap);
        }

        public navigateKeysCriteriaTimestr_args() {}

        public navigateKeysCriteriaTimestr_args(
                java.util.List keys,
                com.cinchapi.concourse.thrift.TCriteria criteria,
                java.lang.String timestamp,
                com.cinchapi.concourse.thrift.AccessToken creds,
                com.cinchapi.concourse.thrift.TransactionToken transaction,
                java.lang.String environment) {
            this();
            this.keys = keys;
            this.criteria = criteria;
            this.timestamp = timestamp;
            this.creds = creds;
            this.transaction = transaction;
            this.environment = environment;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysCriteriaTimestr_args(
                navigateKeysCriteriaTimestr_args other) {
            if(other.isSetKeys()) {
                java.util.List __this__keys = new java.util.ArrayList(
                        other.keys);
                this.keys = __this__keys;
            }
            if(other.isSetCriteria()) {
                this.criteria = new com.cinchapi.concourse.thrift.TCriteria(
                        other.criteria);
            }
            if(other.isSetTimestamp()) {
                this.timestamp = other.timestamp;
            }
            if(other.isSetCreds()) {
                this.creds = new com.cinchapi.concourse.thrift.AccessToken(
                        other.creds);
            }
            if(other.isSetTransaction()) {
                this.transaction = new com.cinchapi.concourse.thrift.TransactionToken(
                        other.transaction);
            }
            if(other.isSetEnvironment()) {
                this.environment = other.environment;
            }
        }

        public navigateKeysCriteriaTimestr_args deepCopy() {
            return new navigateKeysCriteriaTimestr_args(this);
        }

        @Override
        public void clear() {
            this.keys = null;
            this.criteria = null;
            this.timestamp = null;
            this.creds = null;
            this.transaction = null;
            this.environment = null;
        }

        public int getKeysSize() {
            return (this.keys == null) ? 0 : this.keys.size();
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Iterator getKeysIterator() {
            return (this.keys == null) ? null : this.keys.iterator();
        }

        public void addToKeys(java.lang.String elem) {
            if(this.keys == null) {
                this.keys = new java.util.ArrayList();
            }
            this.keys.add(elem);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.List getKeys() {
            return this.keys;
        }

        public navigateKeysCriteriaTimestr_args setKeys(
                @org.apache.thrift.annotation.Nullable java.util.List keys) {
            this.keys = keys;
            return this;
        }

        public void unsetKeys() {
            this.keys = null;
        }

        /**
         * Returns true if field keys is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetKeys() {
            return this.keys != null;
        }

        public void setKeysIsSet(boolean value) {
            if(!value) {
                this.keys = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TCriteria getCriteria() {
            return this.criteria;
        }

        public navigateKeysCriteriaTimestr_args setCriteria(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TCriteria criteria) {
            this.criteria = criteria;
            return this;
        }

        public void unsetCriteria() {
            this.criteria = null;
        }

        /**
         * Returns true if field criteria is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCriteria() {
            return this.criteria != null;
        }

        public void setCriteriaIsSet(boolean value) {
            if(!value) {
                this.criteria = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getTimestamp() {
            return this.timestamp;
        }

        public navigateKeysCriteriaTimestr_args setTimestamp(
                @org.apache.thrift.annotation.Nullable java.lang.String timestamp) {
            this.timestamp = timestamp;
            return this;
        }

        public void unsetTimestamp() {
            this.timestamp = null;
        }

        /**
         * Returns true if field timestamp is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTimestamp() {
            return this.timestamp != null;
        }

        public void setTimestampIsSet(boolean value) {
            if(!value) {
                this.timestamp = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.AccessToken getCreds() {
            return this.creds;
        }

        public navigateKeysCriteriaTimestr_args setCreds(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.AccessToken creds) {
            this.creds = creds;
            return this;
        }

        public void unsetCreds() {
            this.creds = null;
        }

        /**
         * Returns true if field creds is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetCreds() {
            return this.creds != null;
        }

        public void setCredsIsSet(boolean value) {
            if(!value) {
                this.creds = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionToken getTransaction() {
            return this.transaction;
        }

        public navigateKeysCriteriaTimestr_args setTransaction(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionToken transaction) {
            this.transaction = transaction;
            return this;
        }

        public void unsetTransaction() {
            this.transaction = null;
        }

        /**
         * Returns true if field transaction is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetTransaction() {
            return this.transaction != null;
        }

        public void setTransactionIsSet(boolean value) {
            if(!value) {
                this.transaction = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.String getEnvironment() {
            return this.environment;
        }

        public navigateKeysCriteriaTimestr_args setEnvironment(
                @org.apache.thrift.annotation.Nullable java.lang.String environment) {
            this.environment = environment;
            return this;
        }

        public void unsetEnvironment() {
            this.environment = null;
        }

        /**
         * Returns true if field environment is set (has been assigned a value)
         * and false otherwise
         */
        public boolean isSetEnvironment() {
            return this.environment != null;
        }

        public void setEnvironmentIsSet(boolean value) {
            if(!value) {
                this.environment = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case KEYS:
                if(value == null) {
                    unsetKeys();
                }
                else {
                    setKeys((java.util.List) value);
                }
                break;

            case CRITERIA:
                if(value == null) {
                    unsetCriteria();
                }
                else {
                    setCriteria(
                            (com.cinchapi.concourse.thrift.TCriteria) value);
                }
                break;

            case TIMESTAMP:
                if(value == null) {
                    unsetTimestamp();
                }
                else {
                    setTimestamp((java.lang.String) value);
                }
                break;

            case CREDS:
                if(value == null) {
                    unsetCreds();
                }
                else {
                    setCreds((com.cinchapi.concourse.thrift.AccessToken) value);
                }
                break;

            case TRANSACTION:
                if(value == null) {
                    unsetTransaction();
                }
                else {
                    setTransaction(
                            (com.cinchapi.concourse.thrift.TransactionToken) value);
                }
                break;

            case ENVIRONMENT:
                if(value == null) {
                    unsetEnvironment();
                }
                else {
                    setEnvironment((java.lang.String) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case KEYS:
                return getKeys();

            case CRITERIA:
                return getCriteria();

            case TIMESTAMP:
                return getTimestamp();

            case CREDS:
                return getCreds();

            case TRANSACTION:
                return getTransaction();

            case ENVIRONMENT:
                return getEnvironment();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case KEYS:
                return isSetKeys();
            case CRITERIA:
                return isSetCriteria();
            case TIMESTAMP:
                return isSetTimestamp();
            case CREDS:
                return isSetCreds();
            case TRANSACTION:
                return isSetTransaction();
            case ENVIRONMENT:
                return isSetEnvironment();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysCriteriaTimestr_args)
                return this.equals((navigateKeysCriteriaTimestr_args) that);
            return false;
        }

        public boolean equals(navigateKeysCriteriaTimestr_args that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_keys = true && this.isSetKeys();
            boolean that_present_keys = true && that.isSetKeys();
            if(this_present_keys || that_present_keys) {
                if(!(this_present_keys && that_present_keys))
                    return false;
                if(!this.keys.equals(that.keys))
                    return false;
            }

            boolean this_present_criteria = true && this.isSetCriteria();
            boolean that_present_criteria = true && that.isSetCriteria();
            if(this_present_criteria || that_present_criteria) {
                if(!(this_present_criteria && that_present_criteria))
                    return false;
                if(!this.criteria.equals(that.criteria))
                    return false;
            }

            boolean this_present_timestamp = true && this.isSetTimestamp();
            boolean that_present_timestamp = true && that.isSetTimestamp();
            if(this_present_timestamp || that_present_timestamp) {
                if(!(this_present_timestamp && that_present_timestamp))
                    return false;
                if(!this.timestamp.equals(that.timestamp))
                    return false;
            }

            boolean this_present_creds = true && this.isSetCreds();
            boolean that_present_creds = true && that.isSetCreds();
            if(this_present_creds || that_present_creds) {
                if(!(this_present_creds && that_present_creds))
                    return false;
                if(!this.creds.equals(that.creds))
                    return false;
            }

            boolean this_present_transaction = true && this.isSetTransaction();
            boolean that_present_transaction = true && that.isSetTransaction();
            if(this_present_transaction || that_present_transaction) {
                if(!(this_present_transaction && that_present_transaction))
                    return false;
                if(!this.transaction.equals(that.transaction))
                    return false;
            }

            boolean this_present_environment = true && this.isSetEnvironment();
            boolean that_present_environment = true && that.isSetEnvironment();
            if(this_present_environment || that_present_environment) {
                if(!(this_present_environment && that_present_environment))
                    return false;
                if(!this.environment.equals(that.environment))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetKeys()) ? 131071 : 524287);
            if(isSetKeys())
                hashCode = hashCode * 8191 + keys.hashCode();

            hashCode = hashCode * 8191 + ((isSetCriteria()) ? 131071 : 524287);
            if(isSetCriteria())
                hashCode = hashCode * 8191 + criteria.hashCode();

            hashCode = hashCode * 8191 + ((isSetTimestamp()) ? 131071 : 524287);
            if(isSetTimestamp())
                hashCode = hashCode * 8191 + timestamp.hashCode();

            hashCode = hashCode * 8191 + ((isSetCreds()) ? 131071 : 524287);
            if(isSetCreds())
                hashCode = hashCode * 8191 + creds.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetTransaction()) ? 131071 : 524287);
            if(isSetTransaction())
                hashCode = hashCode * 8191 + transaction.hashCode();

            hashCode = hashCode * 8191
                    + ((isSetEnvironment()) ? 131071 : 524287);
            if(isSetEnvironment())
                hashCode = hashCode * 8191 + environment.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysCriteriaTimestr_args other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetKeys())
                    .compareTo(other.isSetKeys());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetKeys()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.keys, other.keys);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCriteria())
                    .compareTo(other.isSetCriteria());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCriteria()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.criteria, other.criteria);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTimestamp())
                    .compareTo(other.isSetTimestamp());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTimestamp()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.timestamp, other.timestamp);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetCreds())
                    .compareTo(other.isSetCreds());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetCreds()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.creds, other.creds);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetTransaction())
                    .compareTo(other.isSetTransaction());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetTransaction()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.transaction, other.transaction);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEnvironment())
                    .compareTo(other.isSetEnvironment());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEnvironment()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.environment, other.environment);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysCriteriaTimestr_args(");
            boolean first = true;

            sb.append("keys:");
            if(this.keys == null) {
                sb.append("null");
            }
            else {
                sb.append(this.keys);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("criteria:");
            if(this.criteria == null) {
                sb.append("null");
            }
            else {
                sb.append(this.criteria);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("timestamp:");
            if(this.timestamp == null) {
                sb.append("null");
            }
            else {
                sb.append(this.timestamp);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("creds:");
            if(this.creds == null) {
                sb.append("null");
            }
            else {
                sb.append(this.creds);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("transaction:");
            if(this.transaction == null) {
                sb.append("null");
            }
            else {
                sb.append(this.transaction);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("environment:");
            if(this.environment == null) {
                sb.append("null");
            }
            else {
                sb.append(this.environment);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
            if(criteria != null) {
                criteria.validate();
            }
            if(creds != null) {
                creds.validate();
            }
            if(transaction != null) {
                transaction.validate();
            }
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysCriteriaTimestr_argsStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCriteriaTimestr_argsStandardScheme getScheme() {
                return new navigateKeysCriteriaTimestr_argsStandardScheme();
            }
        }

        private static class navigateKeysCriteriaTimestr_argsStandardScheme
                extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysCriteriaTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 1: // KEYS
                        if(schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                            {
                                org.apache.thrift.protocol.TList _list660 = iprot
                                        .readListBegin();
                                struct.keys = new java.util.ArrayList(
                                        _list660.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _elem661;
                                for (int _i662 = 0; _i662 < _list660.size; ++_i662) {
                                    _elem661 = iprot.readString();
                                    struct.keys.add(_elem661);
                                }
                                iprot.readListEnd();
                            }
                            struct.setKeysIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // CRITERIA
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.criteria = new com.cinchapi.concourse.thrift.TCriteria();
                            struct.criteria.read(iprot);
                            struct.setCriteriaIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // TIMESTAMP
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.timestamp = iprot.readString();
                            struct.setTimestampIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // CREDS
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                            struct.creds.read(iprot);
                            struct.setCredsIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 5: // TRANSACTION
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                            struct.transaction.read(iprot);
                            struct.setTransactionIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 6: // ENVIRONMENT
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRING) {
                            struct.environment = iprot.readString();
                            struct.setEnvironmentIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysCriteriaTimestr_args struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.keys != null) {
                    oprot.writeFieldBegin(KEYS_FIELD_DESC);
                    {
                        oprot.writeListBegin(
                                new org.apache.thrift.protocol.TList(
                                        org.apache.thrift.protocol.TType.STRING,
                                        struct.keys.size()));
                        for (java.lang.String _iter663 : struct.keys) {
                            oprot.writeString(_iter663);
                        }
                        oprot.writeListEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.criteria != null) {
                    oprot.writeFieldBegin(CRITERIA_FIELD_DESC);
                    struct.criteria.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.timestamp != null) {
                    oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
                    oprot.writeString(struct.timestamp);
                    oprot.writeFieldEnd();
                }
                if(struct.creds != null) {
                    oprot.writeFieldBegin(CREDS_FIELD_DESC);
                    struct.creds.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.transaction != null) {
                    oprot.writeFieldBegin(TRANSACTION_FIELD_DESC);
                    struct.transaction.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.environment != null) {
                    oprot.writeFieldBegin(ENVIRONMENT_FIELD_DESC);
                    oprot.writeString(struct.environment);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysCriteriaTimestr_argsTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCriteriaTimestr_argsTupleScheme getScheme() {
                return new navigateKeysCriteriaTimestr_argsTupleScheme();
            }
        }

        private static class navigateKeysCriteriaTimestr_argsTupleScheme extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCriteriaTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetKeys()) {
                    optionals.set(0);
                }
                if(struct.isSetCriteria()) {
                    optionals.set(1);
                }
                if(struct.isSetTimestamp()) {
                    optionals.set(2);
                }
                if(struct.isSetCreds()) {
                    optionals.set(3);
                }
                if(struct.isSetTransaction()) {
                    optionals.set(4);
                }
                if(struct.isSetEnvironment()) {
                    optionals.set(5);
                }
                oprot.writeBitSet(optionals, 6);
                if(struct.isSetKeys()) {
                    {
                        oprot.writeI32(struct.keys.size());
                        for (java.lang.String _iter664 : struct.keys) {
                            oprot.writeString(_iter664);
                        }
                    }
                }
                if(struct.isSetCriteria()) {
                    struct.criteria.write(oprot);
                }
                if(struct.isSetTimestamp()) {
                    oprot.writeString(struct.timestamp);
                }
                if(struct.isSetCreds()) {
                    struct.creds.write(oprot);
                }
                if(struct.isSetTransaction()) {
                    struct.transaction.write(oprot);
                }
                if(struct.isSetEnvironment()) {
                    oprot.writeString(struct.environment);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCriteriaTimestr_args struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(6);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TList _list665 = new org.apache.thrift.protocol.TList(
                                org.apache.thrift.protocol.TType.STRING,
                                iprot.readI32());
                        struct.keys = new java.util.ArrayList(
                                _list665.size);
                        @org.apache.thrift.annotation.Nullable java.lang.String _elem666;
                        for (int _i667 = 0; _i667 < _list665.size; ++_i667) {
                            _elem666 = iprot.readString();
                            struct.keys.add(_elem666);
                        }
                    }
                    struct.setKeysIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.criteria = new com.cinchapi.concourse.thrift.TCriteria();
                    struct.criteria.read(iprot);
                    struct.setCriteriaIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.timestamp = iprot.readString();
                    struct.setTimestampIsSet(true);
                }
                if(incoming.get(3)) {
                    struct.creds = new com.cinchapi.concourse.thrift.AccessToken();
                    struct.creds.read(iprot);
                    struct.setCredsIsSet(true);
                }
                if(incoming.get(4)) {
                    struct.transaction = new com.cinchapi.concourse.thrift.TransactionToken();
                    struct.transaction.read(iprot);
                    struct.setTransactionIsSet(true);
                }
                if(incoming.get(5)) {
                    struct.environment = iprot.readString();
                    struct.setEnvironmentIsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

    public static class navigateKeysCriteriaTimestr_result implements
            org.apache.thrift.TBase,
            java.io.Serializable,
            Cloneable,
            Comparable {
        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct(
                "navigateKeysCriteriaTimestr_result");

        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "success", org.apache.thrift.protocol.TType.MAP, (short) 0);
        private static final org.apache.thrift.protocol.TField EX_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex", org.apache.thrift.protocol.TType.STRUCT, (short) 1);
        private static final org.apache.thrift.protocol.TField EX2_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex2", org.apache.thrift.protocol.TType.STRUCT, (short) 2);
        private static final org.apache.thrift.protocol.TField EX3_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex3", org.apache.thrift.protocol.TType.STRUCT, (short) 3);
        private static final org.apache.thrift.protocol.TField EX4_FIELD_DESC = new org.apache.thrift.protocol.TField(
                "ex4", org.apache.thrift.protocol.TType.STRUCT, (short) 4);

        private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new navigateKeysCriteriaTimestr_resultStandardSchemeFactory();
        private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new navigateKeysCriteriaTimestr_resultTupleSchemeFactory();

        public @org.apache.thrift.annotation.Nullable java.util.Map>> success; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3; // required
        public @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4; // required

        /**
         * The set of fields this struct contains, along with convenience
         * methods for finding and manipulating them.
         */
        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
            SUCCESS((short) 0, "success"),
            EX((short) 1, "ex"),
            EX2((short) 2, "ex2"),
            EX3((short) 3, "ex3"),
            EX4((short) 4, "ex4");

            private static final java.util.Map byName = new java.util.LinkedHashMap();

            static {
                for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
                    byName.put(field.getFieldName(), field);
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, or null if its
             * not found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByThriftId(int fieldId) {
                switch (fieldId) {
                case 0: // SUCCESS
                    return SUCCESS;
                case 1: // EX
                    return EX;
                case 2: // EX2
                    return EX2;
                case 3: // EX3
                    return EX3;
                case 4: // EX4
                    return EX4;
                default:
                    return null;
                }
            }

            /**
             * Find the _Fields constant that matches fieldId, throwing an
             * exception
             * if it is not found.
             */
            public static _Fields findByThriftIdOrThrow(int fieldId) {
                _Fields fields = findByThriftId(fieldId);
                if(fields == null)
                    throw new java.lang.IllegalArgumentException(
                            "Field " + fieldId + " doesn't exist!");
                return fields;
            }

            /**
             * Find the _Fields constant that matches name, or null if its not
             * found.
             */
            @org.apache.thrift.annotation.Nullable
            public static _Fields findByName(java.lang.String name) {
                return byName.get(name);
            }

            private final short _thriftId;
            private final java.lang.String _fieldName;

            _Fields(short thriftId, java.lang.String fieldName) {
                _thriftId = thriftId;
                _fieldName = fieldName;
            }

            public short getThriftFieldId() {
                return _thriftId;
            }

            public java.lang.String getFieldName() {
                return _fieldName;
            }
        }

        // isset id assignments
        public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
        static {
            java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(
                    _Fields.class);
            tmpMap.put(_Fields.SUCCESS,
                    new org.apache.thrift.meta_data.FieldMetaData("success",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.MapMetaData(
                                    org.apache.thrift.protocol.TType.MAP,
                                    new org.apache.thrift.meta_data.FieldValueMetaData(
                                            org.apache.thrift.protocol.TType.I64),
                                    new org.apache.thrift.meta_data.MapMetaData(
                                            org.apache.thrift.protocol.TType.MAP,
                                            new org.apache.thrift.meta_data.FieldValueMetaData(
                                                    org.apache.thrift.protocol.TType.STRING),
                                            new org.apache.thrift.meta_data.SetMetaData(
                                                    org.apache.thrift.protocol.TType.SET,
                                                    new org.apache.thrift.meta_data.StructMetaData(
                                                            org.apache.thrift.protocol.TType.STRUCT,
                                                            com.cinchapi.concourse.thrift.TObject.class))))));
            tmpMap.put(_Fields.EX,
                    new org.apache.thrift.meta_data.FieldMetaData("ex",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.SecurityException.class)));
            tmpMap.put(_Fields.EX2,
                    new org.apache.thrift.meta_data.FieldMetaData("ex2",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.TransactionException.class)));
            tmpMap.put(_Fields.EX3,
                    new org.apache.thrift.meta_data.FieldMetaData("ex3",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.ParseException.class)));
            tmpMap.put(_Fields.EX4,
                    new org.apache.thrift.meta_data.FieldMetaData("ex4",
                            org.apache.thrift.TFieldRequirementType.DEFAULT,
                            new org.apache.thrift.meta_data.StructMetaData(
                                    org.apache.thrift.protocol.TType.STRUCT,
                                    com.cinchapi.concourse.thrift.PermissionException.class)));
            metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
                    navigateKeysCriteriaTimestr_result.class, metaDataMap);
        }

        public navigateKeysCriteriaTimestr_result() {}

        public navigateKeysCriteriaTimestr_result(
                java.util.Map>> success,
                com.cinchapi.concourse.thrift.SecurityException ex,
                com.cinchapi.concourse.thrift.TransactionException ex2,
                com.cinchapi.concourse.thrift.ParseException ex3,
                com.cinchapi.concourse.thrift.PermissionException ex4) {
            this();
            this.success = success;
            this.ex = ex;
            this.ex2 = ex2;
            this.ex3 = ex3;
            this.ex4 = ex4;
        }

        /**
         * Performs a deep copy on other.
         */
        public navigateKeysCriteriaTimestr_result(
                navigateKeysCriteriaTimestr_result other) {
            if(other.isSetSuccess()) {
                java.util.Map>> __this__success = new java.util.LinkedHashMap>>(
                        other.success.size());
                for (java.util.Map.Entry>> other_element : other.success
                        .entrySet()) {

                    java.lang.Long other_element_key = other_element.getKey();
                    java.util.Map> other_element_value = other_element
                            .getValue();

                    java.lang.Long __this__success_copy_key = other_element_key;

                    java.util.Map> __this__success_copy_value = new java.util.LinkedHashMap>(
                            other_element_value.size());
                    for (java.util.Map.Entry> other_element_value_element : other_element_value
                            .entrySet()) {

                        java.lang.String other_element_value_element_key = other_element_value_element
                                .getKey();
                        java.util.Set other_element_value_element_value = other_element_value_element
                                .getValue();

                        java.lang.String __this__success_copy_value_copy_key = other_element_value_element_key;

                        java.util.Set __this__success_copy_value_copy_value = new java.util.LinkedHashSet(
                                other_element_value_element_value.size());
                        for (com.cinchapi.concourse.thrift.TObject other_element_value_element_value_element : other_element_value_element_value) {
                            __this__success_copy_value_copy_value
                                    .add(new com.cinchapi.concourse.thrift.TObject(
                                            other_element_value_element_value_element));
                        }

                        __this__success_copy_value.put(
                                __this__success_copy_value_copy_key,
                                __this__success_copy_value_copy_value);
                    }

                    __this__success.put(__this__success_copy_key,
                            __this__success_copy_value);
                }
                this.success = __this__success;
            }
            if(other.isSetEx()) {
                this.ex = new com.cinchapi.concourse.thrift.SecurityException(
                        other.ex);
            }
            if(other.isSetEx2()) {
                this.ex2 = new com.cinchapi.concourse.thrift.TransactionException(
                        other.ex2);
            }
            if(other.isSetEx3()) {
                this.ex3 = new com.cinchapi.concourse.thrift.ParseException(
                        other.ex3);
            }
            if(other.isSetEx4()) {
                this.ex4 = new com.cinchapi.concourse.thrift.PermissionException(
                        other.ex4);
            }
        }

        public navigateKeysCriteriaTimestr_result deepCopy() {
            return new navigateKeysCriteriaTimestr_result(this);
        }

        @Override
        public void clear() {
            this.success = null;
            this.ex = null;
            this.ex2 = null;
            this.ex3 = null;
            this.ex4 = null;
        }

        public int getSuccessSize() {
            return (this.success == null) ? 0 : this.success.size();
        }

        public void putToSuccess(long key,
                java.util.Map> val) {
            if(this.success == null) {
                this.success = new java.util.LinkedHashMap>>();
            }
            this.success.put(key, val);
        }

        @org.apache.thrift.annotation.Nullable
        public java.util.Map>> getSuccess() {
            return this.success;
        }

        public navigateKeysCriteriaTimestr_result setSuccess(
                @org.apache.thrift.annotation.Nullable java.util.Map>> success) {
            this.success = success;
            return this;
        }

        public void unsetSuccess() {
            this.success = null;
        }

        /**
         * Returns true if field success is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetSuccess() {
            return this.success != null;
        }

        public void setSuccessIsSet(boolean value) {
            if(!value) {
                this.success = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.SecurityException getEx() {
            return this.ex;
        }

        public navigateKeysCriteriaTimestr_result setEx(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.SecurityException ex) {
            this.ex = ex;
            return this;
        }

        public void unsetEx() {
            this.ex = null;
        }

        /**
         * Returns true if field ex is set (has been assigned a value) and false
         * otherwise
         */
        public boolean isSetEx() {
            return this.ex != null;
        }

        public void setExIsSet(boolean value) {
            if(!value) {
                this.ex = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.TransactionException getEx2() {
            return this.ex2;
        }

        public navigateKeysCriteriaTimestr_result setEx2(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TransactionException ex2) {
            this.ex2 = ex2;
            return this;
        }

        public void unsetEx2() {
            this.ex2 = null;
        }

        /**
         * Returns true if field ex2 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx2() {
            return this.ex2 != null;
        }

        public void setEx2IsSet(boolean value) {
            if(!value) {
                this.ex2 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.ParseException getEx3() {
            return this.ex3;
        }

        public navigateKeysCriteriaTimestr_result setEx3(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.ParseException ex3) {
            this.ex3 = ex3;
            return this;
        }

        public void unsetEx3() {
            this.ex3 = null;
        }

        /**
         * Returns true if field ex3 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx3() {
            return this.ex3 != null;
        }

        public void setEx3IsSet(boolean value) {
            if(!value) {
                this.ex3 = null;
            }
        }

        @org.apache.thrift.annotation.Nullable
        public com.cinchapi.concourse.thrift.PermissionException getEx4() {
            return this.ex4;
        }

        public navigateKeysCriteriaTimestr_result setEx4(
                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.PermissionException ex4) {
            this.ex4 = ex4;
            return this;
        }

        public void unsetEx4() {
            this.ex4 = null;
        }

        /**
         * Returns true if field ex4 is set (has been assigned a value) and
         * false otherwise
         */
        public boolean isSetEx4() {
            return this.ex4 != null;
        }

        public void setEx4IsSet(boolean value) {
            if(!value) {
                this.ex4 = null;
            }
        }

        public void setFieldValue(_Fields field,
                @org.apache.thrift.annotation.Nullable java.lang.Object value) {
            switch (field) {
            case SUCCESS:
                if(value == null) {
                    unsetSuccess();
                }
                else {
                    setSuccess(
                            (java.util.Map>>) value);
                }
                break;

            case EX:
                if(value == null) {
                    unsetEx();
                }
                else {
                    setEx((com.cinchapi.concourse.thrift.SecurityException) value);
                }
                break;

            case EX2:
                if(value == null) {
                    unsetEx2();
                }
                else {
                    setEx2((com.cinchapi.concourse.thrift.TransactionException) value);
                }
                break;

            case EX3:
                if(value == null) {
                    unsetEx3();
                }
                else {
                    setEx3((com.cinchapi.concourse.thrift.ParseException) value);
                }
                break;

            case EX4:
                if(value == null) {
                    unsetEx4();
                }
                else {
                    setEx4((com.cinchapi.concourse.thrift.PermissionException) value);
                }
                break;

            }
        }

        @org.apache.thrift.annotation.Nullable
        public java.lang.Object getFieldValue(_Fields field) {
            switch (field) {
            case SUCCESS:
                return getSuccess();

            case EX:
                return getEx();

            case EX2:
                return getEx2();

            case EX3:
                return getEx3();

            case EX4:
                return getEx4();

            }
            throw new java.lang.IllegalStateException();
        }

        /**
         * Returns true if field corresponding to fieldID is set (has been
         * assigned a value) and false otherwise
         */
        public boolean isSet(_Fields field) {
            if(field == null) {
                throw new java.lang.IllegalArgumentException();
            }

            switch (field) {
            case SUCCESS:
                return isSetSuccess();
            case EX:
                return isSetEx();
            case EX2:
                return isSetEx2();
            case EX3:
                return isSetEx3();
            case EX4:
                return isSetEx4();
            }
            throw new java.lang.IllegalStateException();
        }

        @Override
        public boolean equals(java.lang.Object that) {
            if(that == null)
                return false;
            if(that instanceof navigateKeysCriteriaTimestr_result)
                return this.equals((navigateKeysCriteriaTimestr_result) that);
            return false;
        }

        public boolean equals(navigateKeysCriteriaTimestr_result that) {
            if(that == null)
                return false;
            if(this == that)
                return true;

            boolean this_present_success = true && this.isSetSuccess();
            boolean that_present_success = true && that.isSetSuccess();
            if(this_present_success || that_present_success) {
                if(!(this_present_success && that_present_success))
                    return false;
                if(!this.success.equals(that.success))
                    return false;
            }

            boolean this_present_ex = true && this.isSetEx();
            boolean that_present_ex = true && that.isSetEx();
            if(this_present_ex || that_present_ex) {
                if(!(this_present_ex && that_present_ex))
                    return false;
                if(!this.ex.equals(that.ex))
                    return false;
            }

            boolean this_present_ex2 = true && this.isSetEx2();
            boolean that_present_ex2 = true && that.isSetEx2();
            if(this_present_ex2 || that_present_ex2) {
                if(!(this_present_ex2 && that_present_ex2))
                    return false;
                if(!this.ex2.equals(that.ex2))
                    return false;
            }

            boolean this_present_ex3 = true && this.isSetEx3();
            boolean that_present_ex3 = true && that.isSetEx3();
            if(this_present_ex3 || that_present_ex3) {
                if(!(this_present_ex3 && that_present_ex3))
                    return false;
                if(!this.ex3.equals(that.ex3))
                    return false;
            }

            boolean this_present_ex4 = true && this.isSetEx4();
            boolean that_present_ex4 = true && that.isSetEx4();
            if(this_present_ex4 || that_present_ex4) {
                if(!(this_present_ex4 && that_present_ex4))
                    return false;
                if(!this.ex4.equals(that.ex4))
                    return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            int hashCode = 1;

            hashCode = hashCode * 8191 + ((isSetSuccess()) ? 131071 : 524287);
            if(isSetSuccess())
                hashCode = hashCode * 8191 + success.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx()) ? 131071 : 524287);
            if(isSetEx())
                hashCode = hashCode * 8191 + ex.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx2()) ? 131071 : 524287);
            if(isSetEx2())
                hashCode = hashCode * 8191 + ex2.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx3()) ? 131071 : 524287);
            if(isSetEx3())
                hashCode = hashCode * 8191 + ex3.hashCode();

            hashCode = hashCode * 8191 + ((isSetEx4()) ? 131071 : 524287);
            if(isSetEx4())
                hashCode = hashCode * 8191 + ex4.hashCode();

            return hashCode;
        }

        @Override
        public int compareTo(navigateKeysCriteriaTimestr_result other) {
            if(!getClass().equals(other.getClass())) {
                return getClass().getName()
                        .compareTo(other.getClass().getName());
            }

            int lastComparison = 0;

            lastComparison = java.lang.Boolean.valueOf(isSetSuccess())
                    .compareTo(other.isSetSuccess());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetSuccess()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.success, other.success);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx())
                    .compareTo(other.isSetEx());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex, other.ex);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx2())
                    .compareTo(other.isSetEx2());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx2()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex2, other.ex2);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx3())
                    .compareTo(other.isSetEx3());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx3()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex3, other.ex3);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            lastComparison = java.lang.Boolean.valueOf(isSetEx4())
                    .compareTo(other.isSetEx4());
            if(lastComparison != 0) {
                return lastComparison;
            }
            if(isSetEx4()) {
                lastComparison = org.apache.thrift.TBaseHelper
                        .compareTo(this.ex4, other.ex4);
                if(lastComparison != 0) {
                    return lastComparison;
                }
            }
            return 0;
        }

        @org.apache.thrift.annotation.Nullable
        public _Fields fieldForId(int fieldId) {
            return _Fields.findByThriftId(fieldId);
        }

        public void read(org.apache.thrift.protocol.TProtocol iprot)
                throws org.apache.thrift.TException {
            scheme(iprot).read(iprot, this);
        }

        public void write(org.apache.thrift.protocol.TProtocol oprot)
                throws org.apache.thrift.TException {
            scheme(oprot).write(oprot, this);
        }

        @Override
        public java.lang.String toString() {
            java.lang.StringBuilder sb = new java.lang.StringBuilder(
                    "navigateKeysCriteriaTimestr_result(");
            boolean first = true;

            sb.append("success:");
            if(this.success == null) {
                sb.append("null");
            }
            else {
                sb.append(this.success);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex:");
            if(this.ex == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex2:");
            if(this.ex2 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex2);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex3:");
            if(this.ex3 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex3);
            }
            first = false;
            if(!first)
                sb.append(", ");
            sb.append("ex4:");
            if(this.ex4 == null) {
                sb.append("null");
            }
            else {
                sb.append(this.ex4);
            }
            first = false;
            sb.append(")");
            return sb.toString();
        }

        public void validate() throws org.apache.thrift.TException {
            // check for required fields
            // check for sub-struct validity
        }

        private void writeObject(java.io.ObjectOutputStream out)
                throws java.io.IOException {
            try {
                write(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                out)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private void readObject(java.io.ObjectInputStream in)
                throws java.io.IOException, java.lang.ClassNotFoundException {
            try {
                read(new org.apache.thrift.protocol.TCompactProtocol(
                        new org.apache.thrift.transport.TIOStreamTransport(
                                in)));
            }
            catch (org.apache.thrift.TException te) {
                throw new java.io.IOException(te);
            }
        }

        private static class navigateKeysCriteriaTimestr_resultStandardSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCriteriaTimestr_resultStandardScheme getScheme() {
                return new navigateKeysCriteriaTimestr_resultStandardScheme();
            }
        }

        private static class navigateKeysCriteriaTimestr_resultStandardScheme
                extends
                org.apache.thrift.scheme.StandardScheme {

            public void read(org.apache.thrift.protocol.TProtocol iprot,
                    navigateKeysCriteriaTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TField schemeField;
                iprot.readStructBegin();
                while (true) {
                    schemeField = iprot.readFieldBegin();
                    if(schemeField.type == org.apache.thrift.protocol.TType.STOP) {
                        break;
                    }
                    switch (schemeField.id) {
                    case 0: // SUCCESS
                        if(schemeField.type == org.apache.thrift.protocol.TType.MAP) {
                            {
                                org.apache.thrift.protocol.TMap _map668 = iprot
                                        .readMapBegin();
                                struct.success = new java.util.LinkedHashMap>>(
                                        2 * _map668.size);
                                long _key669;
                                @org.apache.thrift.annotation.Nullable java.util.Map> _val670;
                                for (int _i671 = 0; _i671 < _map668.size; ++_i671) {
                                    _key669 = iprot.readI64();
                                    {
                                        org.apache.thrift.protocol.TMap _map672 = iprot
                                                .readMapBegin();
                                        _val670 = new java.util.LinkedHashMap>(
                                                2 * _map672.size);
                                        @org.apache.thrift.annotation.Nullable java.lang.String _key673;
                                        @org.apache.thrift.annotation.Nullable java.util.Set _val674;
                                        for (int _i675 = 0; _i675 < _map672.size; ++_i675) {
                                            _key673 = iprot.readString();
                                            {
                                                org.apache.thrift.protocol.TSet _set676 = iprot
                                                        .readSetBegin();
                                                _val674 = new java.util.LinkedHashSet(
                                                        2 * _set676.size);
                                                @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem677;
                                                for (int _i678 = 0; _i678 < _set676.size; ++_i678) {
                                                    _elem677 = new com.cinchapi.concourse.thrift.TObject();
                                                    _elem677.read(iprot);
                                                    _val674.add(_elem677);
                                                }
                                                iprot.readSetEnd();
                                            }
                                            _val670.put(_key673, _val674);
                                        }
                                        iprot.readMapEnd();
                                    }
                                    struct.success.put(_key669, _val670);
                                }
                                iprot.readMapEnd();
                            }
                            struct.setSuccessIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 1: // EX
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                            struct.ex.read(iprot);
                            struct.setExIsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 2: // EX2
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                            struct.ex2.read(iprot);
                            struct.setEx2IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 3: // EX3
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                            struct.ex3.read(iprot);
                            struct.setEx3IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    case 4: // EX4
                        if(schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
                            struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                            struct.ex4.read(iprot);
                            struct.setEx4IsSet(true);
                        }
                        else {
                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                    schemeField.type);
                        }
                        break;
                    default:
                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot,
                                schemeField.type);
                    }
                    iprot.readFieldEnd();
                }
                iprot.readStructEnd();

                // check for required fields of primitive type, which can't be
                // checked in the validate method
                struct.validate();
            }

            public void write(org.apache.thrift.protocol.TProtocol oprot,
                    navigateKeysCriteriaTimestr_result struct)
                    throws org.apache.thrift.TException {
                struct.validate();

                oprot.writeStructBegin(STRUCT_DESC);
                if(struct.success != null) {
                    oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
                    {
                        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                struct.success.size()));
                        for (java.util.Map.Entry>> _iter679 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter679.getKey());
                            {
                                oprot.writeMapBegin(
                                        new org.apache.thrift.protocol.TMap(
                                                org.apache.thrift.protocol.TType.STRING,
                                                org.apache.thrift.protocol.TType.SET,
                                                _iter679.getValue().size()));
                                for (java.util.Map.Entry> _iter680 : _iter679
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter680.getKey());
                                    {
                                        oprot.writeSetBegin(
                                                new org.apache.thrift.protocol.TSet(
                                                        org.apache.thrift.protocol.TType.STRUCT,
                                                        _iter680.getValue()
                                                                .size()));
                                        for (com.cinchapi.concourse.thrift.TObject _iter681 : _iter680
                                                .getValue()) {
                                            _iter681.write(oprot);
                                        }
                                        oprot.writeSetEnd();
                                    }
                                }
                                oprot.writeMapEnd();
                            }
                        }
                        oprot.writeMapEnd();
                    }
                    oprot.writeFieldEnd();
                }
                if(struct.ex != null) {
                    oprot.writeFieldBegin(EX_FIELD_DESC);
                    struct.ex.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex2 != null) {
                    oprot.writeFieldBegin(EX2_FIELD_DESC);
                    struct.ex2.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex3 != null) {
                    oprot.writeFieldBegin(EX3_FIELD_DESC);
                    struct.ex3.write(oprot);
                    oprot.writeFieldEnd();
                }
                if(struct.ex4 != null) {
                    oprot.writeFieldBegin(EX4_FIELD_DESC);
                    struct.ex4.write(oprot);
                    oprot.writeFieldEnd();
                }
                oprot.writeFieldStop();
                oprot.writeStructEnd();
            }

        }

        private static class navigateKeysCriteriaTimestr_resultTupleSchemeFactory
                implements org.apache.thrift.scheme.SchemeFactory {
            public navigateKeysCriteriaTimestr_resultTupleScheme getScheme() {
                return new navigateKeysCriteriaTimestr_resultTupleScheme();
            }
        }

        private static class navigateKeysCriteriaTimestr_resultTupleScheme
                extends
                org.apache.thrift.scheme.TupleScheme {

            @Override
            public void write(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCriteriaTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet optionals = new java.util.BitSet();
                if(struct.isSetSuccess()) {
                    optionals.set(0);
                }
                if(struct.isSetEx()) {
                    optionals.set(1);
                }
                if(struct.isSetEx2()) {
                    optionals.set(2);
                }
                if(struct.isSetEx3()) {
                    optionals.set(3);
                }
                if(struct.isSetEx4()) {
                    optionals.set(4);
                }
                oprot.writeBitSet(optionals, 5);
                if(struct.isSetSuccess()) {
                    {
                        oprot.writeI32(struct.success.size());
                        for (java.util.Map.Entry>> _iter682 : struct.success
                                .entrySet()) {
                            oprot.writeI64(_iter682.getKey());
                            {
                                oprot.writeI32(_iter682.getValue().size());
                                for (java.util.Map.Entry> _iter683 : _iter682
                                        .getValue().entrySet()) {
                                    oprot.writeString(_iter683.getKey());
                                    {
                                        oprot.writeI32(
                                                _iter683.getValue().size());
                                        for (com.cinchapi.concourse.thrift.TObject _iter684 : _iter683
                                                .getValue()) {
                                            _iter684.write(oprot);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if(struct.isSetEx()) {
                    struct.ex.write(oprot);
                }
                if(struct.isSetEx2()) {
                    struct.ex2.write(oprot);
                }
                if(struct.isSetEx3()) {
                    struct.ex3.write(oprot);
                }
                if(struct.isSetEx4()) {
                    struct.ex4.write(oprot);
                }
            }

            @Override
            public void read(org.apache.thrift.protocol.TProtocol prot,
                    navigateKeysCriteriaTimestr_result struct)
                    throws org.apache.thrift.TException {
                org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
                java.util.BitSet incoming = iprot.readBitSet(5);
                if(incoming.get(0)) {
                    {
                        org.apache.thrift.protocol.TMap _map685 = new org.apache.thrift.protocol.TMap(
                                org.apache.thrift.protocol.TType.I64,
                                org.apache.thrift.protocol.TType.MAP,
                                iprot.readI32());
                        struct.success = new java.util.LinkedHashMap>>(
                                2 * _map685.size);
                        long _key686;
                        @org.apache.thrift.annotation.Nullable java.util.Map> _val687;
                        for (int _i688 = 0; _i688 < _map685.size; ++_i688) {
                            _key686 = iprot.readI64();
                            {
                                org.apache.thrift.protocol.TMap _map689 = new org.apache.thrift.protocol.TMap(
                                        org.apache.thrift.protocol.TType.STRING,
                                        org.apache.thrift.protocol.TType.SET,
                                        iprot.readI32());
                                _val687 = new java.util.LinkedHashMap>(
                                        2 * _map689.size);
                                @org.apache.thrift.annotation.Nullable java.lang.String _key690;
                                @org.apache.thrift.annotation.Nullable java.util.Set _val691;
                                for (int _i692 = 0; _i692 < _map689.size; ++_i692) {
                                    _key690 = iprot.readString();
                                    {
                                        org.apache.thrift.protocol.TSet _set693 = new org.apache.thrift.protocol.TSet(
                                                org.apache.thrift.protocol.TType.STRUCT,
                                                iprot.readI32());
                                        _val691 = new java.util.LinkedHashSet(
                                                2 * _set693.size);
                                        @org.apache.thrift.annotation.Nullable com.cinchapi.concourse.thrift.TObject _elem694;
                                        for (int _i695 = 0; _i695 < _set693.size; ++_i695) {
                                            _elem694 = new com.cinchapi.concourse.thrift.TObject();
                                            _elem694.read(iprot);
                                            _val691.add(_elem694);
                                        }
                                    }
                                    _val687.put(_key690, _val691);
                                }
                            }
                            struct.success.put(_key686, _val687);
                        }
                    }
                    struct.setSuccessIsSet(true);
                }
                if(incoming.get(1)) {
                    struct.ex = new com.cinchapi.concourse.thrift.SecurityException();
                    struct.ex.read(iprot);
                    struct.setExIsSet(true);
                }
                if(incoming.get(2)) {
                    struct.ex2 = new com.cinchapi.concourse.thrift.TransactionException();
                    struct.ex2.read(iprot);
                    struct.setEx2IsSet(true);
                }
                if(incoming.get(3)) {
                    struct.ex3 = new com.cinchapi.concourse.thrift.ParseException();
                    struct.ex3.read(iprot);
                    struct.setEx3IsSet(true);
                }
                if(incoming.get(4)) {
                    struct.ex4 = new com.cinchapi.concourse.thrift.PermissionException();
                    struct.ex4.read(iprot);
                    struct.setEx4IsSet(true);
                }
            }
        }

        private static  S scheme(
                org.apache.thrift.protocol.TProtocol proto) {
            return (org.apache.thrift.scheme.StandardScheme.class
                    .equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY
                            : TUPLE_SCHEME_FACTORY).getScheme();
        }
    }

}