Sample

Schnappinger/jsweet/def.js.Float64Array

Human rating uses the original dataset scale.

Human4
Lines468

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
33.4Δ 60.9
Scalabrino0.6580–1; higher is more readable
29.8Δ 64.6
Dorn0.9590–1; higher is more readable
98.0Δ 3.6
Mi0.1360–1; higher is more readable
12.2Δ 82.2
LLOC71Logical lines; fewer is more readable
29.0Δ 65.3
DeepSeek V4 Pro9.670–20; mean of three runs
8.7Δ 85.6
GPT-6.1 Sol140–20; mean of three runs
16.2Δ 78.2
BTTF0.5920–1; higher is more readable
56.4Δ 38.0
Human41–4; original rating
94.4

Views

Source code

package def.js; import jsweet.util.function.Function4; /** * A typed array of 64-bit float values. The contents are initialized to 0. If the requested * number of bytes could not be allocated an exception is raised. */ @jsweet.lang.SyntacticIterable public class Float64Array extends Iterable<java.lang.Double> { /** * The size in bytes of each element in the array. */ public int BYTES_PER_ELEMENT; /** * The ArrayBuffer instance referenced by the array. */ public ArrayBuffer buffer; /** * The length in bytes of the array. */ public int byteLength; /** * The offset in bytes of the array. */ public int byteOffset; /** * Returns the this object after copying a section of the array identified by start and end * to the same array starting at position target * @param target If target is negative, it is treated as length+target where length is the * length of the array. * @param start If start is negative, it is treated as length+start. If end is negative, it * is treated as length+end. * @param end If not specified, length of the this object is used as its default value. */ native public Float64Array copyWithin(double target, int start, int end); /** * Returns an array of key, value pairs for every entry in the array */ native public IterableIterator<jsweet.util.tuple.Tuple2<Double,Double>> entries(); /** * Determines whether all the members of an array satisfy the specified test. * @param callbackfn A function that accepts up to three arguments. The every method calls * the callbackfn function for each element in array1 until the callbackfn returns false, * or until the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ native public java.lang.Boolean every(jsweet.util.function.TriFunction<Double,Double,Float64Array,java.lang.Boolean> callbackfn, java.lang.Object thisArg); /** * Returns the this object after filling the section identified by start and end with value * @param value value to fill array section with * @param start index to start filling the array at. If start is negative, it is treated as * length+start where length is the length of the array. * @param end index to stop filling the array at. If end is negative, it is treated as * length+end. */ native public Float64Array fill(double value, int start, int end); /** * Returns the elements of an array that meet the condition specified in a callback function. * @param callbackfn A function that accepts up to three arguments. The filter method calls * the callbackfn function one time for each element in the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ native public Float64Array filter(jsweet.util.function.TriFunction<Double,Double,Float64Array,java.lang.Boolean> callbackfn, java.lang.Object thisArg); /** * Returns the value of the first element in the array where predicate is true, and undefined * otherwise. * @param predicate find calls predicate once for each element of the array, in ascending * order, until it finds one where predicate returns true. If such an element is found, find * immediately returns that element value. Otherwise, find returns undefined. * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ native public double find(jsweet.util.function.TriFunction<Double,Double,Array<Double>,java.lang.Boolean> predicate, java.lang.Object thisArg); /** * Returns the index of the first element in the array where predicate is true, and undefined * otherwise. * @param predicate find calls predicate once for each element of the array, in ascending * order, until it finds one where predicate returns true. If such an element is found, find * immediately returns that element value. Otherwise, find returns undefined. * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ native public double findIndex(java.util.function.Function<Double,java.lang.Boolean> predicate, java.lang.Object thisArg); /** * Performs the specified action for each element in an array. * @param callbackfn A function that accepts up to three arguments. forEach calls the * callbackfn function one time for each element in the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ native public void forEach(jsweet.util.function.TriConsumer<Double,Double,Float64Array> callbackfn, java.lang.Object thisArg); /** * Returns the index of the first occurrence of a value in an array. * @param searchElement The value to locate in the array. * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the * search starts at index 0. */ native public double indexOf(double searchElement, int fromIndex); /** * Adds all the elements of an array separated by the specified separator string. * @param separator A string used to separate one element of an array from the next in the * resulting String. If omitted, the array elements are separated with a comma. */ native public java.lang.String join(java.lang.String separator); /** * Returns an list of keys in the array */ native public IterableIterator<Double> keys(); /** * Returns the index of the last occurrence of a value in an array. * @param searchElement The value to locate in the array. * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the * search starts at index 0. */ native public double lastIndexOf(double searchElement, int fromIndex); /** * The length of the array. */ public int length; /** * Calls a defined callback function on each element of an array, and returns an array that * contains the results. * @param callbackfn A function that accepts up to three arguments. The map method calls the * callbackfn function one time for each element in the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ native public Float64Array map(jsweet.util.function.TriFunction<Double,Double,Float64Array,Double> callbackfn, java.lang.Object thisArg); /** * Calls the specified callback function for all the elements in an array. The return value of * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ native public double reduce(Function4<Double,Double,Double,Float64Array,Double> callbackfn, double initialValue); /** * Calls the specified callback function for all the elements in an array. The return value of * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ native public <U> U reduce(Function4<U,Double,Double,Float64Array,U> callbackfn, U initialValue); /** * Calls the specified callback function for all the elements in an array, in descending order. * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls * the callbackfn function one time for each element in the array. * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an * argument instead of an array value. */ native public double reduceRight(Function4<Double,Double,Double,Float64Array,Double> callbackfn, double initialValue); /** * Calls the specified callback function for all the elements in an array, in descending order. * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls * the callbackfn function one time for each element in the array. * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ native public <U> U reduceRight(Function4<U,Double,Double,Float64Array,U> callbackfn, U initialValue); /** * Reverses the elements in an Array. */ native public Float64Array reverse(); /** * Sets a value or an array of values. * @param index The index of the location to set. * @param value The value to set. */ native public void set(int index, double value); /** * Sets a value or an array of values. * @param array A typed or untyped array of values to set. * @param offset The index in the current array at which the values are to be written. */ native public void set(Float64Array array, int offset); /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. * @param end The end of the specified portion of the array. */ native public Float64Array slice(double start, int end); /** * Determines whether the specified callback function returns true for any element of an array. * @param callbackfn A function that accepts up to three arguments. The some method calls the * callbackfn function for each element in array1 until the callbackfn returns true, or until * the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ native public java.lang.Boolean some(jsweet.util.function.TriFunction<Double,Double,Float64Array,java.lang.Boolean> callbackfn, java.lang.Object thisArg); /** * Sorts an array. * @param compareFn The name of the function used to determine the order of the elements. If * omitted, the elements are sorted in ascending, ASCII character order. */ native public Float64Array sort(java.util.function.BiFunction<Double,Double,Double> compareFn); /** * Gets a new Float64Array view of the ArrayBuffer store for this array, referencing the elements * at begin, inclusive, up to end, exclusive. * @param begin The index of the beginning of the array. * @param end The index of the end of the array. */ native public Float64Array subarray(int begin, int end); /** * Returns an list of values in the array */ native public IterableIterator<Double> values(); native public java.lang.Double $get(int index); native public void $set(int index, java.lang.Double value); public static Float64Array prototype; public Float64Array(int length){} public Float64Array(Float64Array array){} public Float64Array(double[] array){} public Float64Array(ArrayBuffer buffer, int byteOffset, int length){} /** * Returns a new array from a set of elements. * @param items A set of elements to include in the new array object. */ native public static Float64Array of(double... items); /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ native public static Float64Array from(ArrayLike<Double> arrayLike, java.util.function.BiFunction<Double,Double,Double> mapfn, java.lang.Object thisArg); /** * Returns the this object after copying a section of the array identified by start and end * to the same array starting at position target * @param target If target is negative, it is treated as length+target where length is the * length of the array. * @param start If start is negative, it is treated as length+start. If end is negative, it * is treated as length+end. * @param end If not specified, length of the this object is used as its default value. */ native public Float64Array copyWithin(double target, int start); /** * Determines whether all the members of an array satisfy the specified test. * @param callbackfn A function that accepts up to three arguments. The every method calls * the callbackfn function for each element in array1 until the callbackfn returns false, * or until the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ native public java.lang.Boolean every(jsweet.util.function.TriFunction<Double,Double,Float64Array,java.lang.Boolean> callbackfn); /** * Returns the this object after filling the section identified by start and end with value * @param value value to fill array section with * @param start index to start filling the array at. If start is negative, it is treated as * length+start where length is the length of the array. * @param end index to stop filling the array at. If end is negative, it is treated as * length+end. */ native public Float64Array fill(double value, int start); /** * Returns the this object after filling the section identified by start and end with value * @param value value to fill array section with * @param start index to start filling the array at. If start is negative, it is treated as * length+start where length is the length of the array. * @param end index to stop filling the array at. If end is negative, it is treated as * length+end. */ native public Float64Array fill(double value); /** * Returns the elements of an array that meet the condition specified in a callback function. * @param callbackfn A function that accepts up to three arguments. The filter method calls * the callbackfn function one time for each element in the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ native public Float64Array filter(jsweet.util.function.TriFunction<Double,Double,Float64Array,java.lang.Boolean> callbackfn); /** * Returns the value of the first element in the array where predicate is true, and undefined * otherwise. * @param predicate find calls predicate once for each element of the array, in ascending * order, until it finds one where predicate returns true. If such an element is found, find * immediately returns that element value. Otherwise, find returns undefined. * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ native public double find(jsweet.util.function.TriFunction<Double,Double,Array<Double>,java.lang.Boolean> predicate); /** * Returns the index of the first element in the array where predicate is true, and undefined * otherwise. * @param predicate find calls predicate once for each element of the array, in ascending * order, until it finds one where predicate returns true. If such an element is found, find * immediately returns that element value. Otherwise, find returns undefined. * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ native public double findIndex(java.util.function.Function<Double,java.lang.Boolean> predicate); /** * Performs the specified action for each element in an array. * @param callbackfn A function that accepts up to three arguments. forEach calls the * callbackfn function one time for each element in the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ native public void forEach(jsweet.util.function.TriConsumer<Double,Double,Float64Array> callbackfn); /** * Returns the index of the first occurrence of a value in an array. * @param searchElement The value to locate in the array. * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the * search starts at index 0. */ native public double indexOf(double searchElement); /** * Adds all the elements of an array separated by the specified separator string. * @param separator A string used to separate one element of an array from the next in the * resulting String. If omitted, the array elements are separated with a comma. */ native public java.lang.String join(); /** * Returns the index of the last occurrence of a value in an array. * @param searchElement The value to locate in the array. * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the * search starts at index 0. */ native public double lastIndexOf(double searchElement); /** * Calls a defined callback function on each element of an array, and returns an array that * contains the results. * @param callbackfn A function that accepts up to three arguments. The map method calls the * callbackfn function one time for each element in the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ native public Float64Array map(jsweet.util.function.TriFunction<Double,Double,Float64Array,Double> callbackfn); /** * Calls the specified callback function for all the elements in an array. The return value of * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ native public double reduce(Function4<Double,Double,Double,Float64Array,Double> callbackfn); /** * Calls the specified callback function for all the elements in an array, in descending order. * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls * the callbackfn function one time for each element in the array. * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an * argument instead of an array value. */ native public double reduceRight(Function4<Double,Double,Double,Float64Array,Double> callbackfn); /** * Sets a value or an array of values. * @param array A typed or untyped array of values to set. * @param offset The index in the current array at which the values are to be written. */ native public void set(Float64Array array); /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. * @param end The end of the specified portion of the array. */ native public Float64Array slice(double start); /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. * @param end The end of the specified portion of the array. */ native public Float64Array slice(); /** * Determines whether the specified callback function returns true for any element of an array. * @param callbackfn A function that accepts up to three arguments. The some method calls the * callbackfn function for each element in array1 until the callbackfn returns true, or until * the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ native public java.lang.Boolean some(jsweet.util.function.TriFunction<Double,Double,Float64Array,java.lang.Boolean> callbackfn); /** * Sorts an array. * @param compareFn The name of the function used to determine the order of the elements. If * omitted, the elements are sorted in ascending, ASCII character order. */ native public Float64Array sort(); /** * Gets a new Float64Array view of the ArrayBuffer store for this array, referencing the elements * at begin, inclusive, up to end, exclusive. * @param begin The index of the beginning of the array. * @param end The index of the end of the array. */ native public Float64Array subarray(int begin); public Float64Array(ArrayBuffer buffer, int byteOffset){} public Float64Array(ArrayBuffer buffer){} /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ native public static Float64Array from(ArrayLike<Double> arrayLike, java.util.function.BiFunction<Double,Double,Double> mapfn); /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ native public static Float64Array from(ArrayLike<Double> arrayLike); /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ native public static Float64Array from(Iterable<Double> arrayLike, java.util.function.BiFunction<Double,Double,Double> mapfn, java.lang.Object thisArg); /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ native public static Float64Array from(Iterable<Double> arrayLike, java.util.function.BiFunction<Double,Double,Double> mapfn); /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ native public static Float64Array from(Iterable<Double> arrayLike); /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ native public static Float64Array from(Double[] arrayLike, java.util.function.BiFunction<Double,Double,Double> mapfn, java.lang.Object thisArg); /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ native public static Float64Array from(Double[] arrayLike, java.util.function.BiFunction<Double,Double,Double> mapfn); /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ native public static Float64Array from(Double[] arrayLike); /** From Iterable, to allow foreach loop (do not use directly). */ @jsweet.lang.Erased native public java.util.Iterator<java.lang.Double> iterator(); protected Float64Array(){} }

Loading feature diagnosis…

Source regions

Feature contributions

Feature contributions

FeatureValueContribution
(log-odds)
Halstead volumeHow much symbolic information the code contains. It combines the total number of operators and values with the number of distinct ones.8578.78−283.1
Source linesThe number of non-empty source lines.468+187.2
Byte entropyHow varied the bytes in the source text are. Repeated bytes give a lower value; a more even mixture gives a higher value.4.452−6.677

Intercept 8.87 + feature contributions = -93.707 (log-odds).
Score = sigmoid(-93.707) = 0.

Score0.658

Feature contributions

FeatureValueContribution
(log-odds)
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.467.675+6.127
Identifier layout (horizontal)How rapidly the visual pattern of identifier characters changes from left to right. It measures spatial frequency, not the meaning of the names.158.966−3.068
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.139−2.769
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.158.994+1.761
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.1+1.001
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.021+0.741
Indentation frequencyHow rapidly indentation changes from line to line.1−0.703

Intercept 0.07 + feature contributions = 3.161 (log-odds).
Score = sigmoid(3.161) = 0.959.

Score0.136
Score71
Run 1

The code is a generated TypeScript-to-Java binding for the Float64Array API. It has a logical structure with grouped methods and abundant JSDoc documentation, which aids intent clarity. However, readability is severely impacted by extreme verbosity: each method is overloaded many times (e.g., fill has 3 nearly identical signatures), creating hundreds of repetitive lines that bury the actual API surface. The parameter types like jsweet.util.function.TriFunction and Function4 are very long and hard to parse quickly. Action granularity is fine (one method per line), and nesting is flat, but reading flow is poor because the reader must scroll through redundant overloads and duplicated documentation. The code is not tangled, but the sheer length and repetition make it hard to find and understand the core functionality. This is likely auto-generated code, and while it is technically well-organized, it is not designed for human consumption.

Run 2

The code is a generated TypeScript/JSweet API wrapper for Float64Array, featuring consistent Javadoc and organizational grouping by method overloads. However, readability is hindered by extreme redundancy: many method signatures are repeated solely to represent optional parameters, significantly inflating length. Nesting is flat and structure is predictable, but clarity suffers because repeated documentation and near-identical signatures obscure the intended API. Reading flow is repetitive. The one-action-per-line style is acceptable, but the overall length and duplication prevent higher readability.

Run 3

The code is a single large class definition with no internal logical grouping beyond the implicit method order, making it difficult to navigate. There is shallow nesting overall, but many method signatures are extremely long, especially those with function type parameters, which hurts readability. The intent of each method is documented, and the JSDoc comments are clear, but the sheer volume of overloads creates ambiguity and redundancy. Code length is excessively long—many overloads repeat identical documentation, inflating the file. Each method signature generally occupies one line, but those lines often wrap and contain multiple parameters, reducing granularity. Reading flow is disorganized: fields, methods, and constructors are interleaved without clear sections, and related overloads are scattered rather than grouped consistently.

Run 1

1. Code Structure: A coherent typed-array API, but fields, constructors, and static methods are interspersed, and related overloads are often separated. 2. Nesting: Essentially flat declarations with no nested control flow, making individual members easy to scan. 3. Clarity of intent: Descriptive method names and extensive documentation clarify purpose, though copied comments mention absent parameters and sometimes misdescribe behavior. Undocumented interop members add ambiguity. 4. Code length: Native declarations are concise, but repeated documentation and numerous overloads make the file unnecessarily cumbersome to read. 5. Action granularity: Each line generally contains one declaration; there are no compound operational statements. Long, fully qualified generic signatures nevertheless create visual density. 6. Reading flow: Consistent indentation and comment-before-method placement help, but sparse separation, inconsistent comment formatting, and distant overloads interrupt navigation. Overall, readable as an API binding, but organization and documentation duplication substantially reduce readability.

Run 2

Code Structure: A coherent typed-array API with mostly alphabetical methods, but fields, constructors, and overloads are scattered instead of consistently grouped. Nesting: Almost entirely flat declarations, with no complex control flow. Clarity of intent: Descriptive method names and extensive documentation explain most operations; copied comments referencing absent parameters and misleading descriptions weaken precision. Code length: Individual declarations are concise, but repeated documentation and numerous separated overloads make the file unnecessarily cumbersome to scan. Action granularity: Each line generally contains one declaration, providing clear separation; long generic signatures are visually dense. Reading flow: Consistent indentation and predictable method naming help, but fully qualified types, minimal whitespace between members, inconsistent comment formatting, and distant overloads interrupt natural navigation. Overall, readable as an API binding, but less effective as a quickly navigable reference.

Run 3

1. Code Structure: A coherent typed-array API, but fields, constructors, static factories, and overloads are scattered rather than consistently grouped. 2. Nesting: Essentially flat declarations with no nested control flow, making individual members easy to scan. 3. Clarity of intent: Descriptive method names and extensive documentation communicate purpose, although copied comments reference absent parameters and sometimes describe behavior inaccurately. 4. Code length: Individual declarations are concise, but repeated documentation across numerous overloads substantially inflates the file. Long fully qualified generic signatures add visual noise. 5. Action granularity: Each line generally contains a single declaration; there are no compound operational statements. 6. Reading flow: Consistent indentation and mostly alphabetical method ordering help navigation, but separated overloads, inconsistent comment formatting, and limited section spacing interrupt the flow. Overall, readable as an API binding, but repetitive and insufficiently organized for efficient browsing.