|  | // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  | package com.android.tools.r8.utils; | 
|  |  | 
|  | import com.android.tools.r8.errors.Unreachable; | 
|  |  | 
|  | /** | 
|  | *  Simple pair to enable returning multiple values from a function. | 
|  | * | 
|  | *  <p>This should not be used for anything besides arguments and return values. In particular, it | 
|  | *  is not comparable and does not support hashing. Introduce a proper named type for use cases | 
|  | *  demanding such. | 
|  | */ | 
|  | public class Pair<T, S> { | 
|  | private T first; | 
|  | private S second; | 
|  |  | 
|  | public Pair() { | 
|  | this(null, null); | 
|  | } | 
|  |  | 
|  | public Pair(T first, S second) { | 
|  | this.first = first; | 
|  | this.second = second; | 
|  | } | 
|  |  | 
|  | public T getFirst() { | 
|  | return first; | 
|  | } | 
|  |  | 
|  | public S getSecond() { | 
|  | return second; | 
|  | } | 
|  |  | 
|  | public void setFirst(T first) { | 
|  | this.first = first; | 
|  | } | 
|  |  | 
|  | public void setSecond(S second) { | 
|  | this.second = second; | 
|  | } | 
|  |  | 
|  | @Override | 
|  | public int hashCode() { | 
|  | throw new Unreachable("Pair does not want to support hashing!"); | 
|  | } | 
|  |  | 
|  | @Override | 
|  | public boolean equals(Object obj) { | 
|  | throw new Unreachable("Pair does not want to support equality!"); | 
|  | } | 
|  |  | 
|  | @Override | 
|  | public String toString() { | 
|  | return "Pair{" + first + ", " + second + '}'; | 
|  | } | 
|  |  | 
|  | public static <T, S> Pair<T, S> create(T t, S s) { | 
|  | return new Pair<>(t, s); | 
|  | } | 
|  | } |