package com.puppycrawl.tools.checkstyle.checks.indentation; //indent:0 exp:0
import java.util.AbstractMap; //indent:0 exp:0
import java.util.List; //indent:0 exp:0
import java.util.Set; //indent:0 exp:0
import java.util.concurrent.ConcurrentMap; //indent:0 exp:0
import javax.xml.bind.annotation.XmlElement; //indent:0 exp:0
/** //indent:0 exp:0
* This test-input is intended to be checked using following configuration: //indent:1 exp:1
* //indent:1 exp:1
* arrayInitIndent = 4 //indent:1 exp:1
* basicOffset = 2 //indent:1 exp:1
* braceAdjustment = 0 //indent:1 exp:1
* caseIndent = 4 //indent:1 exp:1
* forceStrictCondition = false //indent:1 exp:1
* lineWrappingIndentation = 4 //indent:1 exp:1
* tabWidth = 4 //indent:1 exp:1
* throwsIndent = 4 //indent:1 exp:1
* //indent:1 exp:1
* //indent:1 exp:1
*/ //indent:1 exp:1
class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V> { //indent:0 exp:0
enum Strength { //indent:2 exp:2
/* //indent:4 exp:4
* (kevinb): If we strongly reference the value and aren't loading, we needn't wrap the //indent:5 exp:5
* value. This could save ~8 bytes per entry. //indent:5 exp:5
*/ //indent:5 exp:5
STRONG { //indent:4 exp:4
<K, V> Object referenceValue( //indent:6 exp:6
Segment<K, V> segment, ReferenceEntry<K, V> entry, int value, int weight) { //indent:10 exp:>=10
return (weight == 1) //indent:8 exp:8
? new StrongValueReference<K, V>(value) //indent:12 exp:>=12
: new WeightedStrongValueReference<K, V>(value, weight); //indent:12 exp:>=12
} //indent:6 exp:6
@Override //indent:6 exp:6
List<Object> defaultEquivalence() { //indent:6 exp:6
return new java.util.ArrayList<>(); //indent:8 exp:8
} //indent:6 exp:6
@Override //indent:6 exp:6
<K, V> ValueReference<K, V> referenceValue(Segment<K, V> segment, //indent:5 exp:5
ReferenceEntry<K, V> entry, V value, int weight) { //indent:16 exp:>=10
return null; //indent:8 exp:8
} //indent:6 exp:6
}, //indent:4 exp:4
SOFT { //indent:4 exp:4
<K, V> Object referenceValue1( //indent:6 exp:6
Segment<K, V> segment, ReferenceEntry<Integer, Integer> entry, int value, int weight) { //indent:10 exp:>=10
return (weight == 1) //indent:8 exp:8
? new SoftValueReference<K, V>(segment.valueReferenceQueue, value, entry) //indent:12 exp:>=12
: new WeightedSoftValueReference<K, V>(); //indent:12 exp:>=12
} //indent:6 exp:6
@Override //indent:6 exp:6
List<Object> defaultEquivalence() { //indent:6 exp:6
return new java.util.ArrayList<>(); //indent:8 exp:8
} //indent:6 exp:6
@Override <K, V> Object referenceValue(Segment<K, V> segment, ReferenceEntry<K, V> entry, //indent:6 exp:6
V value, int weight) //indent:16 exp:>=10
{ //indent:6 exp:6
return null; //indent:8 exp:8
} //indent:6 exp:6
}, //indent:4 exp:4
WEAK { //indent:4 exp:4
@Override //indent:6 exp:6
<K, V> Object referenceValue( //indent:6 exp:6
Segment<K, V> segment, ReferenceEntry<K, V> entry, V value, int weight) { //indent:10 exp:>=10
return (weight == 1) //indent:8 exp:8
? new WeakValueReference<K, V>() //indent:12 exp:>=12
: new WeightedWeakValueReference<K, V>(); //indent:12 exp:>=12
} //indent:6 exp:6
@Override //indent:6 exp:6
List<Object> defaultEquivalence() { //indent:6 exp:6
return new java.util.ArrayList<>(); //indent:8 exp:8
} //indent:6 exp:6
}; //indent:4 exp:4
/** //indent:4 exp:4
* Creates a reference for the given value according to this value strength. //indent:5 exp:5
*/ //indent:5 exp:5
abstract <K, V> Object referenceValue( //indent:4 exp:4
Segment<K, V> segment, ReferenceEntry<K, V> entry, V value, int weight); //indent:8 exp:>=8
/** //indent:4 exp:4
* Returns the default equivalence strategy used to compare and hash keys or values referenced //indent:5 exp:5
* at this strength. This strategy will be used unless the user explicitly specifies an //indent:5 exp:5
* alternate strategy. //indent:5 exp:5
*/ //indent:5 exp:5
abstract List<Object> defaultEquivalence(); //indent:4 exp:4
} //indent:2 exp:2
/** //indent:2 exp:2
* Creates new entries. //indent:3 exp:3
*/ //indent:3 exp:3
enum EntryFactory { //indent:2 exp:2
STRONG { //indent:4 exp:4
<K, V> StrongEntry<K, V> newEntry( //indent:6 exp:6
Segment<K, V> segment, K key, int hash, @XmlElement ReferenceEntry<K, V> next) { //indent:10 exp:>=10
return new StrongEntry<K, V>(); //indent:8 exp:8
} //indent:6 exp:6
}, //indent:4 exp:4
STRONG_ACCESS { //indent:4 exp:4
<K, V> StrongAccessEntry<K, V> newEntry( //indent:6 exp:6
Segment<K, V> segment, K key, int hash, @XmlElement ReferenceEntry<K, V> next) { //indent:10 exp:>=10
return new StrongAccessEntry<K, V>(key, hash, next); //indent:8 exp:8
} //indent:6 exp:6
<K, V> ReferenceEntry<K, V> copyEntry( //indent:6 exp:6
Segment<K, V> segment, ReferenceEntry<K, V> original, ReferenceEntry<K, V> newNext) { //indent:10 exp:>=10
return newNext; //indent:8 exp:8
} //indent:6 exp:6
{; //indent:6 exp:6
} //indent:6 exp:6
}, //indent:5 exp:5
STRONG_WRITE { //indent:4 exp:4
<K, V> StrongEntry<K, V> newEntry( //indent:6 exp:6
Segment<K, V> segment, K key, int hash, @XmlElement ReferenceEntry<K, V> next) { //indent:10 exp:>=10
return new StrongEntry<K, V>(); //indent:8 exp:8
} //indent:6 exp:6
<K, V> ReferenceEntry<K, V> copyEntry( //indent:6 exp:6
Segment<K, V> segment, ReferenceEntry<K, V> original, ReferenceEntry<K, V> newNext) { //indent:10 exp:>=10
return newNext; //indent:8 exp:8
} //indent:6 exp:6
}, //indent:4 exp:4
STRONG_ACCESS_WRITE { //indent:4 exp:4
<K, V> StrongEntry<K, V> newEntry( //indent:6 exp:6
Segment<K, V> segment, K key, int hash, @XmlElement ReferenceEntry<K, V> next) { //indent:10 exp:>=10
return new StrongEntry<K, V>(); //indent:8 exp:8
} //indent:6 exp:6
<K, V> ReferenceEntry<K, V> copyEntry( //indent:6 exp:6
Segment<K, V> segment, ReferenceEntry<K, V> original, ReferenceEntry<K, V> newNext) { //indent:10 exp:>=10
return newNext; //indent:8 exp:8
} //indent:6 exp:6
}, //indent:4 exp:4
WEAK { //indent:4 exp:4
<K, V> StrongEntry<K, V> newEntry( //indent:6 exp:6
Segment<K, V> segment, K key, int hash, @XmlElement ReferenceEntry<K, V> next) { //indent:10 exp:>=10
return new StrongEntry<K, V>(); //indent:8 exp:8
} //indent:6 exp:6
}, //indent:4 exp:4
WEAK_ACCESS { //indent:4 exp:4
<K, V> StrongEntry<K, V> newEntry( //indent:6 exp:6
Segment<K, V> segment, K key, int hash, @XmlElement ReferenceEntry<K, V> next) { //indent:10 exp:>=10
return new StrongEntry<K, V>(); //indent:8 exp:8
} //indent:6 exp:6
<K, V> ReferenceEntry<K, V> copyEntry( //indent:6 exp:6
Segment<K, V> segment, ReferenceEntry<K, V> original, ReferenceEntry<K, V> newNext) { //indent:10 exp:>=10
return newNext; //indent:8 exp:8
} //indent:6 exp:6
}, //indent:4 exp:4
WEAK_WRITE { //indent:4 exp:4
<K, V> StrongEntry<K, V> newEntry( //indent:6 exp:6
Segment<K, V> segment, K key, int hash, @XmlElement ReferenceEntry<K, V> next) { //indent:10 exp:>=10
return new StrongEntry<K, V>(); //indent:8 exp:8
} //indent:6 exp:6
<K, V> ReferenceEntry<K, V> copyEntry( //indent:6 exp:6
Segment<K, V> segment, ReferenceEntry<K, V> original, ReferenceEntry<K, V> newNext) { //indent:10 exp:>=10
return newNext; //indent:8 exp:8
} //indent:6 exp:6
}, //indent:4 exp:4
WEAK_ACCESS_WRITE { //indent:4 exp:4
<K, V> StrongEntry<K, V> newEntry( //indent:6 exp:6
Segment<K, V> segment, K key, int hash, @XmlElement ReferenceEntry<K, V> next) { //indent:10 exp:>=10
return new StrongEntry<K, V>(); //indent:8 exp:8
} //indent:6 exp:6
<K, V> ReferenceEntry<K, V> copyEntry( //indent:6 exp:6
Segment<K, V> segment, ReferenceEntry<K, V> original, ReferenceEntry<K, V> newNext) { //indent:10 exp:>=10
return newNext; //indent:8 exp:8
} //indent:6 exp:6
}; //indent:4 exp:4
} //indent:2 exp:2
@Override //indent:2 exp:2
public Set<java.util.Map.Entry<K, V>> entrySet() //indent:2 exp:2
{ //indent:2 exp:2
return null; //indent:4 exp:4
} //indent:2 exp:2
@Override //indent:2 exp:2
public V putIfAbsent(K key, V value) //indent:2 exp:2
{ //indent:2 exp:2
return null; //indent:4 exp:4
} //indent:2 exp:2
@Override //indent:2 exp:2
public boolean remove(Object key, Object value) //indent:2 exp:2
{ //indent:2 exp:2
return false; //indent:4 exp:4
} //indent:2 exp:2
@Override //indent:2 exp:2
public boolean replace(K key, V oldValue, V newValue) //indent:2 exp:2
{ //indent:2 exp:2
return false; //indent:4 exp:4
} //indent:2 exp:2
@Override //indent:2 exp:2
public V replace(K key, V value) //indent:2 exp:2
{ //indent:2 exp:2
return null; //indent:4 exp:4
} //indent:2 exp:2
private static class ValueReference<T1, T2> { //indent:2 exp:2
} //indent:2 exp:2
private static class ReferenceEntry<T1, T2> { //indent:2 exp:2
} //indent:2 exp:2
private static class Segment<T1, T2> { //indent:2 exp:2
protected Object valueReferenceQueue; //indent:4 exp:4
} //indent:2 exp:2
private static class StrongAccessEntry<T1, T2> { //indent:2 exp:2
public StrongAccessEntry(T1 key, int hash, ReferenceEntry<T1, T2> next) //indent:4 exp:4
{ //indent:4 exp:4
} //indent:4 exp:4
} //indent:2 exp:2
private static class StrongValueReference<T1, T2> { //indent:2 exp:2
public StrongValueReference(int value) //indent:4 exp:4
{ //indent:4 exp:4
} //indent:4 exp:4
} //indent:2 exp:2
private static class WeightedStrongValueReference<T1, T2> { //indent:2 exp:2
public WeightedStrongValueReference(int value, int weight) //indent:4 exp:4
{ //indent:4 exp:4
} //indent:4 exp:4
} //indent:2 exp:2
private static class SoftValueReference<T1, T2> { //indent:2 exp:2
public SoftValueReference(Object valueReferenceQueue, int value, //indent:4 exp:4
ReferenceEntry<Integer, Integer> entry) //indent:14 exp:>=8
{ //indent:4 exp:4
} //indent:4 exp:4
} //indent:2 exp:2
private static class WeightedSoftValueReference<T1, T2> { //indent:2 exp:2
} //indent:2 exp:2
private static class WeakValueReference<T1, T2> { //indent:2 exp:2
} //indent:2 exp:2
private static class WeightedWeakValueReference<T1, T2> { //indent:2 exp:2
} //indent:2 exp:2
private static class StrongEntry<T1, T2> { //indent:2 exp:2
} //indent:2 exp:2
} //indent:0 exp:0