Function( Function { head: Destructured( FunctionHeadDestructured { ellipsis: true, identifier: None, arguments: [ FunctionHeadDestructuredArgument { identifier: "config", default: None, }, FunctionHeadDestructuredArgument { identifier: "lib", default: None, }, FunctionHeadDestructuredArgument { identifier: "pkgs", default: None, }, ], }, ), body: LetIn( LetIn { bindings: [ Inherit( BindingInherit { from: Some( Identifier( Identifier { id: "lib", span: Span { start: Position { line: 4, column: 12, }, end: Position { line: 4, column: 15, }, }, }, ), ), attributes: [ Raw( PartRaw { content: "concatStringsSep", span: Span { start: Position { line: 5, column: 5, }, end: Position { line: 5, column: 21, }, }, }, ), Raw( PartRaw { content: "flip", span: Span { start: Position { line: 6, column: 5, }, end: Position { line: 6, column: 9, }, }, }, ), Raw( PartRaw { content: "literalMD", span: Span { start: Position { line: 7, column: 5, }, end: Position { line: 7, column: 14, }, }, }, ), Raw( PartRaw { content: "literalExpression", span: Span { start: Position { line: 8, column: 5, }, end: Position { line: 8, column: 22, }, }, }, ), Raw( PartRaw { content: "optionalAttrs", span: Span { start: Position { line: 9, column: 5, }, end: Position { line: 9, column: 18, }, }, }, ), Raw( PartRaw { content: "optionals", span: Span { start: Position { line: 10, column: 5, }, end: Position { line: 10, column: 14, }, }, }, ), Raw( PartRaw { content: "recursiveUpdate", span: Span { start: Position { line: 11, column: 5, }, end: Position { line: 11, column: 20, }, }, }, ), Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 12, column: 5, }, end: Position { line: 12, column: 10, }, }, }, ), Raw( PartRaw { content: "mkEnableOption", span: Span { start: Position { line: 13, column: 5, }, end: Position { line: 13, column: 19, }, }, }, ), Raw( PartRaw { content: "mkIf", span: Span { start: Position { line: 14, column: 5, }, end: Position { line: 14, column: 9, }, }, }, ), Raw( PartRaw { content: "mkOption", span: Span { start: Position { line: 15, column: 5, }, end: Position { line: 15, column: 13, }, }, }, ), Raw( PartRaw { content: "types", span: Span { start: Position { line: 16, column: 5, }, end: Position { line: 16, column: 10, }, }, }, ), Raw( PartRaw { content: "versionAtLeast", span: Span { start: Position { line: 17, column: 5, }, end: Position { line: 17, column: 19, }, }, }, ), ], span: Span { start: Position { line: 3, column: 4, }, end: Position { line: 18, column: 6, }, }, }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cfg", span: Span { start: Position { line: 20, column: 3, }, end: Position { line: 20, column: 6, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 20, column: 9, }, end: Position { line: 20, column: 15, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "services", span: Span { start: Position { line: 20, column: 16, }, end: Position { line: 20, column: 24, }, }, }, ), Raw( PartRaw { content: "cassandra", span: Span { start: Position { line: 20, column: 25, }, end: Position { line: 20, column: 34, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultUser", span: Span { start: Position { line: 22, column: 3, }, end: Position { line: 22, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "cassandra", span: Span { start: Position { line: 22, column: 18, }, end: Position { line: 22, column: 27, }, }, }, ), ], span: Span { start: Position { line: 22, column: 17, }, end: Position { line: 22, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cassandraConfig", span: Span { start: Position { line: 24, column: 3, }, end: Position { line: 24, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "flip", span: Span { start: Position { line: 24, column: 21, }, end: Position { line: 24, column: 25, }, }, }, ), arguments: [ Identifier( Identifier { id: "recursiveUpdate", span: Span { start: Position { line: 24, column: 26, }, end: Position { line: 24, column: 41, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 24, column: 42, }, end: Position { line: 24, column: 45, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "extraConfig", span: Span { start: Position { line: 24, column: 46, }, end: Position { line: 24, column: 57, }, }, }, ), ], default: None, }, ), BinaryOperation( BinaryOperation { left: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "commitlog_sync", span: Span { start: Position { line: 26, column: 7, }, end: Position { line: 26, column: 21, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "batch", span: Span { start: Position { line: 26, column: 25, }, end: Position { line: 26, column: 30, }, }, }, ), ], span: Span { start: Position { line: 26, column: 24, }, end: Position { line: 26, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "commitlog_sync_batch_window_in_ms", span: Span { start: Position { line: 27, column: 7, }, end: Position { line: 27, column: 40, }, }, }, ), ], to: Integer( Integer { value: "2", span: Span { start: Position { line: 27, column: 43, }, end: Position { line: 27, column: 44, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "start_native_transport", span: Span { start: Position { line: 28, column: 7, }, end: Position { line: 28, column: 29, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 28, column: 32, }, end: Position { line: 28, column: 35, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "allowClients", span: Span { start: Position { line: 28, column: 36, }, end: Position { line: 28, column: 48, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cluster_name", span: Span { start: Position { line: 29, column: 7, }, end: Position { line: 29, column: 19, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 29, column: 22, }, end: Position { line: 29, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "clusterName", span: Span { start: Position { line: 29, column: 26, }, end: Position { line: 29, column: 37, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "partitioner", span: Span { start: Position { line: 30, column: 7, }, end: Position { line: 30, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "org.apache.cassandra.dht.Murmur3Partitioner", span: Span { start: Position { line: 30, column: 22, }, end: Position { line: 30, column: 65, }, }, }, ), ], span: Span { start: Position { line: 30, column: 21, }, end: Position { line: 30, column: 66, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "endpoint_snitch", span: Span { start: Position { line: 31, column: 7, }, end: Position { line: 31, column: 22, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "SimpleSnitch", span: Span { start: Position { line: 31, column: 26, }, end: Position { line: 31, column: 38, }, }, }, ), ], span: Span { start: Position { line: 31, column: 25, }, end: Position { line: 31, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "data_file_directories", span: Span { start: Position { line: 32, column: 7, }, end: Position { line: 32, column: 28, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 32, column: 36, }, end: Position { line: 32, column: 39, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "homeDir", span: Span { start: Position { line: 32, column: 40, }, end: Position { line: 32, column: 47, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/data", span: Span { start: Position { line: 32, column: 34, }, end: Position { line: 32, column: 53, }, }, }, ), ], span: Span { start: Position { line: 32, column: 33, }, end: Position { line: 32, column: 54, }, }, }, ), ], span: Span { start: Position { line: 32, column: 31, }, end: Position { line: 32, column: 56, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "commitlog_directory", span: Span { start: Position { line: 33, column: 7, }, end: Position { line: 33, column: 26, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 33, column: 32, }, end: Position { line: 33, column: 35, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "homeDir", span: Span { start: Position { line: 33, column: 36, }, end: Position { line: 33, column: 43, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/commitlog", span: Span { start: Position { line: 33, column: 30, }, end: Position { line: 33, column: 54, }, }, }, ), ], span: Span { start: Position { line: 33, column: 29, }, end: Position { line: 33, column: 55, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "saved_caches_directory", span: Span { start: Position { line: 34, column: 7, }, end: Position { line: 34, column: 29, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 34, column: 35, }, end: Position { line: 34, column: 38, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "homeDir", span: Span { start: Position { line: 34, column: 39, }, end: Position { line: 34, column: 46, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/saved_caches", span: Span { start: Position { line: 34, column: 33, }, end: Position { line: 34, column: 60, }, }, }, ), ], span: Span { start: Position { line: 34, column: 32, }, end: Position { line: 34, column: 61, }, }, }, ), }, ), ], span: Span { start: Position { line: 25, column: 5, }, end: Position { line: 35, column: 6, }, }, }, ), operator: Update, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 35, column: 10, }, end: Position { line: 35, column: 23, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 35, column: 25, }, end: Position { line: 35, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "seedAddresses", span: Span { start: Position { line: 35, column: 29, }, end: Position { line: 35, column: 42, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: List( List { elements: [], span: Span { start: Position { line: 35, column: 46, }, end: Position { line: 35, column: 49, }, }, }, ), }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "seed_provider", span: Span { start: Position { line: 36, column: 7, }, end: Position { line: 36, column: 20, }, }, }, ), ], to: List( List { elements: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "class_name", span: Span { start: Position { line: 38, column: 11, }, end: Position { line: 38, column: 21, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "org.apache.cassandra.locator.SimpleSeedProvider", span: Span { start: Position { line: 38, column: 25, }, end: Position { line: 38, column: 72, }, }, }, ), ], span: Span { start: Position { line: 38, column: 24, }, end: Position { line: 38, column: 73, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "parameters", span: Span { start: Position { line: 39, column: 11, }, end: Position { line: 39, column: 21, }, }, }, ), ], to: List( List { elements: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "seeds", span: Span { start: Position { line: 39, column: 27, }, end: Position { line: 39, column: 32, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 39, column: 35, }, end: Position { line: 39, column: 51, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: ",", span: Span { start: Position { line: 39, column: 53, }, end: Position { line: 39, column: 54, }, }, }, ), ], span: Span { start: Position { line: 39, column: 52, }, end: Position { line: 39, column: 55, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 39, column: 56, }, end: Position { line: 39, column: 59, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "seedAddresses", span: Span { start: Position { line: 39, column: 60, }, end: Position { line: 39, column: 73, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 39, column: 25, }, end: Position { line: 39, column: 76, }, }, }, ), ], span: Span { start: Position { line: 39, column: 24, }, end: Position { line: 39, column: 77, }, }, }, ), }, ), ], span: Span { start: Position { line: 37, column: 9, }, end: Position { line: 40, column: 10, }, }, }, ), ], span: Span { start: Position { line: 36, column: 23, }, end: Position { line: 41, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 35, column: 51, }, end: Position { line: 42, column: 6, }, }, }, ), ], }, ), operator: Update, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionalAttrs", span: Span { start: Position { line: 42, column: 10, }, end: Position { line: 42, column: 23, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "versionAtLeast", span: Span { start: Position { line: 42, column: 25, }, end: Position { line: 42, column: 39, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 42, column: 40, }, end: Position { line: 42, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 42, column: 44, }, end: Position { line: 42, column: 51, }, }, }, ), Raw( PartRaw { content: "version", span: Span { start: Position { line: 42, column: 52, }, end: Position { line: 42, column: 59, }, }, }, ), ], default: None, }, ), String( String_ { parts: [ Raw( PartRaw { content: "3", span: Span { start: Position { line: 42, column: 61, }, end: Position { line: 42, column: 62, }, }, }, ), ], span: Span { start: Position { line: 42, column: 60, }, end: Position { line: 42, column: 63, }, }, }, ), ], }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "hints_directory", span: Span { start: Position { line: 43, column: 7, }, end: Position { line: 43, column: 22, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 43, column: 28, }, end: Position { line: 43, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "homeDir", span: Span { start: Position { line: 43, column: 32, }, end: Position { line: 43, column: 39, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/hints", span: Span { start: Position { line: 43, column: 26, }, end: Position { line: 43, column: 46, }, }, }, ), ], span: Span { start: Position { line: 43, column: 25, }, end: Position { line: 43, column: 47, }, }, }, ), }, ), ], span: Span { start: Position { line: 42, column: 65, }, end: Position { line: 44, column: 6, }, }, }, ), ], }, ), }, ), }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cassandraConfigWithAddresses", span: Span { start: Position { line: 47, column: 3, }, end: Position { line: 47, column: 31, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "cassandraConfig", span: Span { start: Position { line: 47, column: 34, }, end: Position { line: 47, column: 49, }, }, }, ), operator: Update, right: BinaryOperation( BinaryOperation { left: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 48, column: 8, }, end: Position { line: 48, column: 11, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listenAddress", span: Span { start: Position { line: 48, column: 12, }, end: Position { line: 48, column: 25, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 48, column: 29, }, end: Position { line: 48, column: 33, }, }, }, ), }, ), then: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "listen_interface", span: Span { start: Position { line: 49, column: 12, }, end: Position { line: 49, column: 28, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 49, column: 31, }, end: Position { line: 49, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listenInterface", span: Span { start: Position { line: 49, column: 35, }, end: Position { line: 49, column: 50, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 49, column: 10, }, end: Position { line: 49, column: 53, }, }, }, ), else_: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "listen_address", span: Span { start: Position { line: 50, column: 12, }, end: Position { line: 50, column: 26, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 50, column: 29, }, end: Position { line: 50, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listenAddress", span: Span { start: Position { line: 50, column: 33, }, end: Position { line: 50, column: 46, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 50, column: 10, }, end: Position { line: 50, column: 49, }, }, }, ), span: Span { start: Position { line: 48, column: 5, }, end: Position { line: 50, column: 49, }, }, }, ), operator: Update, right: IfThenElse( IfThenElse { predicate: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 52, column: 8, }, end: Position { line: 52, column: 11, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "rpcAddress", span: Span { start: Position { line: 52, column: 12, }, end: Position { line: 52, column: 22, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 52, column: 26, }, end: Position { line: 52, column: 30, }, }, }, ), }, ), then: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "rpc_interface", span: Span { start: Position { line: 53, column: 12, }, end: Position { line: 53, column: 25, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 53, column: 28, }, end: Position { line: 53, column: 31, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "rpcInterface", span: Span { start: Position { line: 53, column: 32, }, end: Position { line: 53, column: 44, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 53, column: 10, }, end: Position { line: 53, column: 47, }, }, }, ), else_: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "rpc_address", span: Span { start: Position { line: 54, column: 12, }, end: Position { line: 54, column: 23, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 54, column: 26, }, end: Position { line: 54, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "rpcAddress", span: Span { start: Position { line: 54, column: 30, }, end: Position { line: 54, column: 40, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 54, column: 10, }, end: Position { line: 54, column: 43, }, }, }, ), span: Span { start: Position { line: 52, column: 5, }, end: Position { line: 54, column: 43, }, }, }, ), }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cassandraEtc", span: Span { start: Position { line: 57, column: 3, }, end: Position { line: 57, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 57, column: 18, }, end: Position { line: 57, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "stdenv", span: Span { start: Position { line: 57, column: 23, }, end: Position { line: 57, column: 29, }, }, }, ), Raw( PartRaw { content: "mkDerivation", span: Span { start: Position { line: 57, column: 30, }, end: Position { line: 57, column: 42, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "name", span: Span { start: Position { line: 58, column: 5, }, end: Position { line: 58, column: 9, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "cassandra-etc", span: Span { start: Position { line: 58, column: 13, }, end: Position { line: 58, column: 26, }, }, }, ), ], span: Span { start: Position { line: 58, column: 12, }, end: Position { line: 58, column: 27, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cassandraYaml", span: Span { start: Position { line: 60, column: 5, }, end: Position { line: 60, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 60, column: 21, }, end: Position { line: 60, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "toJSON", span: Span { start: Position { line: 60, column: 30, }, end: Position { line: 60, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ Identifier( Identifier { id: "cassandraConfigWithAddresses", span: Span { start: Position { line: 60, column: 37, }, end: Position { line: 60, column: 65, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cassandraEnvPkg", span: Span { start: Position { line: 61, column: 5, }, end: Position { line: 61, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 61, column: 26, }, end: Position { line: 61, column: 29, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 61, column: 30, }, end: Position { line: 61, column: 37, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/conf/cassandra-env.sh", span: Span { start: Position { line: 61, column: 24, }, end: Position { line: 61, column: 60, }, }, }, ), ], span: Span { start: Position { line: 61, column: 23, }, end: Position { line: 61, column: 61, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "cassandraLogbackConfig", span: Span { start: Position { line: 62, column: 5, }, end: Position { line: 62, column: 27, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 62, column: 30, }, end: Position { line: 62, column: 34, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 62, column: 35, }, end: Position { line: 62, column: 44, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "logback.xml", span: Span { start: Position { line: 62, column: 46, }, end: Position { line: 62, column: 57, }, }, }, ), ], span: Span { start: Position { line: 62, column: 45, }, end: Position { line: 62, column: 58, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 62, column: 59, }, end: Position { line: 62, column: 62, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "logbackConfig", span: Span { start: Position { line: 62, column: 63, }, end: Position { line: 62, column: 76, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "passAsFile", span: Span { start: Position { line: 64, column: 5, }, end: Position { line: 64, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "extraEnvSh", span: Span { start: Position { line: 64, column: 21, }, end: Position { line: 64, column: 31, }, }, }, ), ], span: Span { start: Position { line: 64, column: 20, }, end: Position { line: 64, column: 32, }, }, }, ), ], span: Span { start: Position { line: 64, column: 18, }, end: Position { line: 64, column: 34, }, }, }, ), }, ), Inherit( BindingInherit { from: Some( Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 65, column: 14, }, end: Position { line: 65, column: 17, }, }, }, ), ), attributes: [ Raw( PartRaw { content: "extraEnvSh", span: Span { start: Position { line: 65, column: 19, }, end: Position { line: 65, column: 29, }, }, }, ), ], span: Span { start: Position { line: 57, column: 44, }, end: Position { line: 65, column: 30, }, }, }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "buildCommand", span: Span { start: Position { line: 67, column: 5, }, end: Position { line: 67, column: 17, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "mkdir -p \"$out\"\n\necho \"$cassandraYaml\" > \"$out/cassandra.yaml\"\nln -s \"$cassandraLogbackConfig\" \"$out/logback.xml\"\n\n( cat \"$cassandraEnvPkg\"\n echo \"# lines from services.cassandra.extraEnvSh: \"\n cat \"$extraEnvShPath\"\n) > \"$out/cassandra-env.sh\"\n\n# Delete default JMX Port, otherwise we can't set it using env variable\nsed -i '/JMX_PORT=\"7199\"/d' \"$out/cassandra-env.sh\"\n\n# Delete default password file\nsed -i '/-Dcom.sun.management.jmxremote.password.file=\\/etc\\/cassandra\\/jmxremote.password/d' \"$out/cassandra-env.sh\"\n", span: Span { start: Position { line: 68, column: 1, }, end: Position { line: 83, column: 5, }, }, }, ), ], span: Span { start: Position { line: 67, column: 20, }, end: Position { line: 83, column: 7, }, }, }, ), }, ), ], span: Span { start: Position { line: 57, column: 43, }, end: Position { line: 84, column: 4, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultJmxRolesFile", span: Span { start: Position { line: 86, column: 3, }, end: Position { line: 86, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 87, column: 5, }, end: Position { line: 87, column: 13, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "foldl'", span: Span { start: Position { line: 87, column: 14, }, end: Position { line: 87, column: 20, }, }, }, ), ], default: None, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "left", }, ), body: Function( Function { head: Simple( FunctionHeadSimple { identifier: "right", }, ), body: BinaryOperation( BinaryOperation { left: Identifier( Identifier { id: "left", span: Span { start: Position { line: 88, column: 21, }, end: Position { line: 88, column: 25, }, }, }, ), operator: Addition, right: Identifier( Identifier { id: "right", span: Span { start: Position { line: 88, column: 28, }, end: Position { line: 88, column: 33, }, }, }, ), }, ), span: Span { start: Position { line: 88, column: 14, }, end: Position { line: 88, column: 33, }, }, }, ), span: Span { start: Position { line: 88, column: 8, }, end: Position { line: 88, column: 33, }, }, }, ), String( String_ { parts: [], span: Span { start: Position { line: 88, column: 35, }, end: Position { line: 88, column: 37, }, }, }, ), FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "map", span: Span { start: Position { line: 89, column: 8, }, end: Position { line: 89, column: 11, }, }, }, ), arguments: [ Function( Function { head: Simple( FunctionHeadSimple { identifier: "role", }, ), body: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "role", span: Span { start: Position { line: 89, column: 22, }, end: Position { line: 89, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "username", span: Span { start: Position { line: 89, column: 27, }, end: Position { line: 89, column: 35, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: " ", span: Span { start: Position { line: 89, column: 20, }, end: Position { line: 89, column: 37, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "role", span: Span { start: Position { line: 89, column: 39, }, end: Position { line: 89, column: 43, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "password", span: Span { start: Position { line: 89, column: 44, }, end: Position { line: 89, column: 52, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 89, column: 19, }, end: Position { line: 89, column: 54, }, }, }, ), span: Span { start: Position { line: 89, column: 13, }, end: Position { line: 89, column: 54, }, }, }, ), PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 89, column: 56, }, end: Position { line: 89, column: 59, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "jmxRoles", span: Span { start: Position { line: 89, column: 60, }, end: Position { line: 89, column: 68, }, }, }, ), ], default: None, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "fullJvmOptions", span: Span { start: Position { line: 91, column: 3, }, end: Position { line: 91, column: 17, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 92, column: 5, }, end: Position { line: 92, column: 8, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "jvmOpts", span: Span { start: Position { line: 92, column: 9, }, end: Position { line: 92, column: 16, }, }, }, ), ], default: None, }, ), operator: Concatenation, right: BinaryOperation( BinaryOperation { left: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionals", span: Span { start: Position { line: 93, column: 8, }, end: Position { line: 93, column: 17, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 93, column: 19, }, end: Position { line: 93, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "jmxRoles", span: Span { start: Position { line: 93, column: 23, }, end: Position { line: 93, column: 31, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: List( List { elements: [], span: Span { start: Position { line: 93, column: 35, }, end: Position { line: 93, column: 38, }, }, }, ), }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "-Dcom.sun.management.jmxremote.authenticate=true", span: Span { start: Position { line: 94, column: 8, }, end: Position { line: 94, column: 56, }, }, }, ), ], span: Span { start: Position { line: 94, column: 7, }, end: Position { line: 94, column: 57, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "-Dcom.sun.management.jmxremote.password.file=", span: Span { start: Position { line: 95, column: 8, }, end: Position { line: 95, column: 72, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 95, column: 55, }, end: Position { line: 95, column: 58, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "jmxRolesFile", span: Span { start: Position { line: 95, column: 59, }, end: Position { line: 95, column: 71, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 95, column: 7, }, end: Position { line: 95, column: 73, }, }, }, ), ], span: Span { start: Position { line: 93, column: 40, }, end: Position { line: 96, column: 6, }, }, }, ), ], }, ), operator: Concatenation, right: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "optionals", span: Span { start: Position { line: 96, column: 10, }, end: Position { line: 96, column: 19, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 96, column: 20, }, end: Position { line: 96, column: 23, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "remoteJmx", span: Span { start: Position { line: 96, column: 24, }, end: Position { line: 96, column: 33, }, }, }, ), ], default: None, }, ), List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "-Djava.rmi.server.hostname=", span: Span { start: Position { line: 97, column: 8, }, end: Position { line: 97, column: 52, }, }, }, ), Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 97, column: 37, }, end: Position { line: 97, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "rpcAddress", span: Span { start: Position { line: 97, column: 41, }, end: Position { line: 97, column: 51, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 97, column: 7, }, end: Position { line: 97, column: 53, }, }, }, ), ], span: Span { start: Position { line: 96, column: 34, }, end: Position { line: 98, column: 6, }, }, }, ), ], }, ), }, ), }, ), }, ), ], target: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 102, column: 3, }, end: Position { line: 102, column: 10, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 102, column: 11, }, end: Position { line: 102, column: 19, }, }, }, ), Raw( PartRaw { content: "cassandra", span: Span { start: Position { line: 102, column: 20, }, end: Position { line: 102, column: 29, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 104, column: 5, }, end: Position { line: 104, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkEnableOption", span: Span { start: Position { line: 104, column: 14, }, end: Position { line: 104, column: 28, }, }, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 104, column: 30, }, end: Position { line: 104, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 104, column: 34, }, end: Position { line: 104, column: 39, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Apache Cassandra – Scalable and highly available database.\n", span: Span { start: Position { line: 105, column: 1, }, end: Position { line: 106, column: 5, }, }, }, ), ], span: Span { start: Position { line: 104, column: 40, }, end: Position { line: 106, column: 7, }, }, }, ), ], }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "clusterName", span: Span { start: Position { line: 108, column: 5, }, end: Position { line: 108, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 108, column: 19, }, end: Position { line: 108, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 109, column: 7, }, end: Position { line: 109, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 109, column: 14, }, end: Position { line: 109, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 109, column: 20, }, end: Position { line: 109, column: 23, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 110, column: 7, }, end: Position { line: 110, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Test Cluster", span: Span { start: Position { line: 110, column: 18, }, end: Position { line: 110, column: 30, }, }, }, ), ], span: Span { start: Position { line: 110, column: 17, }, end: Position { line: 110, column: 31, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 111, column: 7, }, end: Position { line: 111, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 111, column: 21, }, end: Position { line: 111, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The name of the cluster.\nThis setting prevents nodes in one logical cluster from joining\nanother. All nodes in a cluster must have the same value.\n", span: Span { start: Position { line: 112, column: 1, }, end: Position { line: 115, column: 7, }, }, }, ), ], span: Span { start: Position { line: 111, column: 27, }, end: Position { line: 115, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 108, column: 28, }, end: Position { line: 116, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 118, column: 5, }, end: Position { line: 118, column: 9, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 118, column: 12, }, end: Position { line: 118, column: 20, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 119, column: 7, }, end: Position { line: 119, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 119, column: 14, }, end: Position { line: 119, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 119, column: 20, }, end: Position { line: 119, column: 23, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 120, column: 7, }, end: Position { line: 120, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "defaultUser", span: Span { start: Position { line: 120, column: 17, }, end: Position { line: 120, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 121, column: 7, }, end: Position { line: 121, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 121, column: 21, }, end: Position { line: 121, column: 26, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Run Apache Cassandra under this user.", span: Span { start: Position { line: 121, column: 28, }, end: Position { line: 121, column: 65, }, }, }, ), ], span: Span { start: Position { line: 121, column: 27, }, end: Position { line: 121, column: 66, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 118, column: 21, }, end: Position { line: 122, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 124, column: 5, }, end: Position { line: 124, column: 10, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 124, column: 13, }, end: Position { line: 124, column: 21, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 125, column: 7, }, end: Position { line: 125, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 125, column: 14, }, end: Position { line: 125, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 125, column: 20, }, end: Position { line: 125, column: 23, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 126, column: 7, }, end: Position { line: 126, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "defaultUser", span: Span { start: Position { line: 126, column: 17, }, end: Position { line: 126, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 127, column: 7, }, end: Position { line: 127, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 127, column: 21, }, end: Position { line: 127, column: 26, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Run Apache Cassandra under this group.", span: Span { start: Position { line: 127, column: 28, }, end: Position { line: 127, column: 66, }, }, }, ), ], span: Span { start: Position { line: 127, column: 27, }, end: Position { line: 127, column: 67, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 124, column: 22, }, end: Position { line: 128, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "homeDir", span: Span { start: Position { line: 130, column: 5, }, end: Position { line: 130, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 130, column: 15, }, end: Position { line: 130, column: 23, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 131, column: 7, }, end: Position { line: 131, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 131, column: 14, }, end: Position { line: 131, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 131, column: 20, }, end: Position { line: 131, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 132, column: 7, }, end: Position { line: 132, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/var/lib/cassandra", span: Span { start: Position { line: 132, column: 18, }, end: Position { line: 132, column: 36, }, }, }, ), ], span: Span { start: Position { line: 132, column: 17, }, end: Position { line: 132, column: 37, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 133, column: 7, }, end: Position { line: 133, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 133, column: 21, }, end: Position { line: 133, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Home directory for Apache Cassandra.\n", span: Span { start: Position { line: 134, column: 1, }, end: Position { line: 135, column: 7, }, }, }, ), ], span: Span { start: Position { line: 133, column: 27, }, end: Position { line: 135, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 130, column: 24, }, end: Position { line: 136, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 138, column: 5, }, end: Position { line: 138, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 138, column: 15, }, end: Position { line: 138, column: 23, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 139, column: 7, }, end: Position { line: 139, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 139, column: 14, }, end: Position { line: 139, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 139, column: 20, }, end: Position { line: 139, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 140, column: 7, }, end: Position { line: 140, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 140, column: 17, }, end: Position { line: 140, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "cassandra", span: Span { start: Position { line: 140, column: 22, }, end: Position { line: 140, column: 31, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 141, column: 7, }, end: Position { line: 141, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 141, column: 21, }, end: Position { line: 141, column: 38, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "pkgs.cassandra", span: Span { start: Position { line: 141, column: 40, }, end: Position { line: 141, column: 54, }, }, }, ), ], span: Span { start: Position { line: 141, column: 39, }, end: Position { line: 141, column: 55, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 142, column: 7, }, end: Position { line: 142, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 142, column: 17, }, end: Position { line: 142, column: 34, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "pkgs.cassandra_3_11", span: Span { start: Position { line: 142, column: 36, }, end: Position { line: 142, column: 55, }, }, }, ), ], span: Span { start: Position { line: 142, column: 35, }, end: Position { line: 142, column: 56, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 143, column: 7, }, end: Position { line: 143, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 143, column: 21, }, end: Position { line: 143, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The Apache Cassandra package to use.\n", span: Span { start: Position { line: 144, column: 1, }, end: Position { line: 145, column: 7, }, }, }, ), ], span: Span { start: Position { line: 143, column: 27, }, end: Position { line: 145, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 138, column: 24, }, end: Position { line: 146, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "jvmOpts", span: Span { start: Position { line: 148, column: 5, }, end: Position { line: 148, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 148, column: 15, }, end: Position { line: 148, column: 23, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 149, column: 7, }, end: Position { line: 149, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 149, column: 14, }, end: Position { line: 149, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 149, column: 20, }, end: Position { line: 149, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 149, column: 27, }, end: Position { line: 149, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 149, column: 33, }, end: Position { line: 149, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 150, column: 7, }, end: Position { line: 150, column: 14, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 150, column: 17, }, end: Position { line: 150, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 151, column: 7, }, end: Position { line: 151, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 151, column: 21, }, end: Position { line: 151, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Populate the `JVM_OPT` environment variable.\n", span: Span { start: Position { line: 152, column: 1, }, end: Position { line: 153, column: 7, }, }, }, ), ], span: Span { start: Position { line: 151, column: 27, }, end: Position { line: 153, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 148, column: 24, }, end: Position { line: 154, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "listenAddress", span: Span { start: Position { line: 156, column: 5, }, end: Position { line: 156, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 156, column: 21, }, end: Position { line: 156, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 157, column: 7, }, end: Position { line: 157, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 157, column: 14, }, end: Position { line: 157, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 157, column: 20, }, end: Position { line: 157, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 157, column: 27, }, end: Position { line: 157, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 157, column: 33, }, end: Position { line: 157, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 158, column: 7, }, end: Position { line: 158, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "127.0.0.1", span: Span { start: Position { line: 158, column: 18, }, end: Position { line: 158, column: 27, }, }, }, ), ], span: Span { start: Position { line: 158, column: 17, }, end: Position { line: 158, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 159, column: 7, }, end: Position { line: 159, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 159, column: 17, }, end: Position { line: 159, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 160, column: 7, }, end: Position { line: 160, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 160, column: 21, }, end: Position { line: 160, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Address or interface to bind to and tell other Cassandra nodes\nto connect to. You _must_ change this if you want multiple\nnodes to be able to communicate!\n\nSet {option}`listenAddress` OR {option}`listenInterface`, not both.\n\nLeaving it blank leaves it up to\n`InetAddress.getLocalHost()`. This will always do the \"Right\nThing\" _if_ the node is properly configured (hostname, name\nresolution, etc), and the Right Thing is to use the address\nassociated with the hostname (it might not be).\n\nSetting {option}`listenAddress` to `0.0.0.0` is always wrong.\n", span: Span { start: Position { line: 161, column: 1, }, end: Position { line: 174, column: 7, }, }, }, ), ], span: Span { start: Position { line: 160, column: 27, }, end: Position { line: 174, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 156, column: 30, }, end: Position { line: 175, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "listenInterface", span: Span { start: Position { line: 177, column: 5, }, end: Position { line: 177, column: 20, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 177, column: 23, }, end: Position { line: 177, column: 31, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 178, column: 7, }, end: Position { line: 178, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 178, column: 14, }, end: Position { line: 178, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 178, column: 20, }, end: Position { line: 178, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 178, column: 27, }, end: Position { line: 178, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 178, column: 33, }, end: Position { line: 178, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 179, column: 7, }, end: Position { line: 179, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 179, column: 17, }, end: Position { line: 179, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 180, column: 7, }, end: Position { line: 180, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "eth1", span: Span { start: Position { line: 180, column: 18, }, end: Position { line: 180, column: 22, }, }, }, ), ], span: Span { start: Position { line: 180, column: 17, }, end: Position { line: 180, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 181, column: 7, }, end: Position { line: 181, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 181, column: 21, }, end: Position { line: 181, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Set `listenAddress` OR `listenInterface`, not both. Interfaces\nmust correspond to a single address, IP aliasing is not\nsupported.\n", span: Span { start: Position { line: 182, column: 1, }, end: Position { line: 185, column: 7, }, }, }, ), ], span: Span { start: Position { line: 181, column: 27, }, end: Position { line: 185, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 177, column: 32, }, end: Position { line: 186, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "rpcAddress", span: Span { start: Position { line: 188, column: 5, }, end: Position { line: 188, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 188, column: 18, }, end: Position { line: 188, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 189, column: 7, }, end: Position { line: 189, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 189, column: 14, }, end: Position { line: 189, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 189, column: 20, }, end: Position { line: 189, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 189, column: 27, }, end: Position { line: 189, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 189, column: 33, }, end: Position { line: 189, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 190, column: 7, }, end: Position { line: 190, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "127.0.0.1", span: Span { start: Position { line: 190, column: 18, }, end: Position { line: 190, column: 27, }, }, }, ), ], span: Span { start: Position { line: 190, column: 17, }, end: Position { line: 190, column: 28, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 191, column: 7, }, end: Position { line: 191, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 191, column: 17, }, end: Position { line: 191, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 192, column: 7, }, end: Position { line: 192, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 192, column: 21, }, end: Position { line: 192, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The address or interface to bind the native transport server to.\n\nSet {option}`rpcAddress` OR {option}`rpcInterface`, not both.\n\nLeaving {option}`rpcAddress` blank has the same effect as on\n{option}`listenAddress` (i.e. it will be based on the configured hostname\nof the node).\n\nNote that unlike {option}`listenAddress`, you can specify `\"0.0.0.0\"`, but you\nmust also set `extraConfig.broadcast_rpc_address` to a value other\nthan `\"0.0.0.0\"`.\n\nFor security reasons, you should not expose this port to the\ninternet. Firewall it if needed.\n", span: Span { start: Position { line: 193, column: 1, }, end: Position { line: 207, column: 7, }, }, }, ), ], span: Span { start: Position { line: 192, column: 27, }, end: Position { line: 207, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 188, column: 27, }, end: Position { line: 208, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "rpcInterface", span: Span { start: Position { line: 210, column: 5, }, end: Position { line: 210, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 210, column: 20, }, end: Position { line: 210, column: 28, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 211, column: 7, }, end: Position { line: 211, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 211, column: 14, }, end: Position { line: 211, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 211, column: 20, }, end: Position { line: 211, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 211, column: 27, }, end: Position { line: 211, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 211, column: 33, }, end: Position { line: 211, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 212, column: 7, }, end: Position { line: 212, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 212, column: 17, }, end: Position { line: 212, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 213, column: 7, }, end: Position { line: 213, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "eth1", span: Span { start: Position { line: 213, column: 18, }, end: Position { line: 213, column: 22, }, }, }, ), ], span: Span { start: Position { line: 213, column: 17, }, end: Position { line: 213, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 214, column: 7, }, end: Position { line: 214, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 214, column: 21, }, end: Position { line: 214, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Set {option}`rpcAddress` OR {option}`rpcInterface`, not both. Interfaces must\ncorrespond to a single address, IP aliasing is not supported.\n", span: Span { start: Position { line: 215, column: 1, }, end: Position { line: 217, column: 7, }, }, }, ), ], span: Span { start: Position { line: 214, column: 27, }, end: Position { line: 217, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 210, column: 29, }, end: Position { line: 218, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "logbackConfig", span: Span { start: Position { line: 220, column: 5, }, end: Position { line: 220, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 220, column: 21, }, end: Position { line: 220, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 221, column: 7, }, end: Position { line: 221, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 221, column: 14, }, end: Position { line: 221, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 221, column: 20, }, end: Position { line: 221, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 222, column: 7, }, end: Position { line: 222, column: 14, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "\n \n \n %-5level %date{HH:mm:ss,SSS} %msg%n\n \n \n\n \n \n \n\n \n\n", span: Span { start: Position { line: 223, column: 1, }, end: Position { line: 236, column: 7, }, }, }, ), ], span: Span { start: Position { line: 222, column: 17, }, end: Position { line: 236, column: 9, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 237, column: 7, }, end: Position { line: 237, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 237, column: 21, }, end: Position { line: 237, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "XML logback configuration for cassandra\n", span: Span { start: Position { line: 238, column: 1, }, end: Position { line: 239, column: 7, }, }, }, ), ], span: Span { start: Position { line: 237, column: 27, }, end: Position { line: 239, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 220, column: 30, }, end: Position { line: 240, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "seedAddresses", span: Span { start: Position { line: 242, column: 5, }, end: Position { line: 242, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 242, column: 21, }, end: Position { line: 242, column: 29, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 243, column: 7, }, end: Position { line: 243, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 243, column: 14, }, end: Position { line: 243, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 243, column: 20, }, end: Position { line: 243, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 243, column: 27, }, end: Position { line: 243, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 243, column: 33, }, end: Position { line: 243, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 244, column: 7, }, end: Position { line: 244, column: 14, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "127.0.0.1", span: Span { start: Position { line: 244, column: 20, }, end: Position { line: 244, column: 29, }, }, }, ), ], span: Span { start: Position { line: 244, column: 19, }, end: Position { line: 244, column: 30, }, }, }, ), ], span: Span { start: Position { line: 244, column: 17, }, end: Position { line: 244, column: 32, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 245, column: 7, }, end: Position { line: 245, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 245, column: 21, }, end: Position { line: 245, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "The addresses of hosts designated as contact points in the cluster. A\njoining node contacts one of the nodes in the seeds list to learn the\ntopology of the ring.\nSet to `[ \"127.0.0.1\" ]` for a single node cluster.\n", span: Span { start: Position { line: 246, column: 1, }, end: Position { line: 250, column: 7, }, }, }, ), ], span: Span { start: Position { line: 245, column: 27, }, end: Position { line: 250, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 242, column: 30, }, end: Position { line: 251, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "allowClients", span: Span { start: Position { line: 253, column: 5, }, end: Position { line: 253, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 253, column: 20, }, end: Position { line: 253, column: 28, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 254, column: 7, }, end: Position { line: 254, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 254, column: 14, }, end: Position { line: 254, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 254, column: 20, }, end: Position { line: 254, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 255, column: 7, }, end: Position { line: 255, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 255, column: 17, }, end: Position { line: 255, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 256, column: 7, }, end: Position { line: 256, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 256, column: 21, }, end: Position { line: 256, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Enables or disables the native transport server (CQL binary protocol).\nThis server uses the same address as the {option}`rpcAddress`,\nbut the port it uses is not `rpc_port` but\n`native_transport_port`. See the official Cassandra\ndocs for more information on these variables and set them using\n{option}`extraConfig`.\n", span: Span { start: Position { line: 257, column: 1, }, end: Position { line: 263, column: 7, }, }, }, ), ], span: Span { start: Position { line: 256, column: 27, }, end: Position { line: 263, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 253, column: 29, }, end: Position { line: 264, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraConfig", span: Span { start: Position { line: 266, column: 5, }, end: Position { line: 266, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 266, column: 19, }, end: Position { line: 266, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 267, column: 7, }, end: Position { line: 267, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 267, column: 14, }, end: Position { line: 267, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "attrs", span: Span { start: Position { line: 267, column: 20, }, end: Position { line: 267, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 268, column: 7, }, end: Position { line: 268, column: 14, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [], span: Span { start: Position { line: 268, column: 17, }, end: Position { line: 268, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 269, column: 7, }, end: Position { line: 269, column: 14, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "commitlog_sync_batch_window_in_ms", span: Span { start: Position { line: 271, column: 11, }, end: Position { line: 271, column: 44, }, }, }, ), ], to: Integer( Integer { value: "3", span: Span { start: Position { line: 271, column: 47, }, end: Position { line: 271, column: 48, }, }, }, ), }, ), ], span: Span { start: Position { line: 270, column: 9, }, end: Position { line: 272, column: 10, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 273, column: 7, }, end: Position { line: 273, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 273, column: 21, }, end: Position { line: 273, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Extra options to be merged into {file}`cassandra.yaml` as nix attribute set.\n", span: Span { start: Position { line: 274, column: 1, }, end: Position { line: 275, column: 7, }, }, }, ), ], span: Span { start: Position { line: 273, column: 27, }, end: Position { line: 275, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 266, column: 28, }, end: Position { line: 276, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "extraEnvSh", span: Span { start: Position { line: 278, column: 5, }, end: Position { line: 278, column: 15, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 278, column: 18, }, end: Position { line: 278, column: 26, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 279, column: 7, }, end: Position { line: 279, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 279, column: 14, }, end: Position { line: 279, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "lines", span: Span { start: Position { line: 279, column: 20, }, end: Position { line: 279, column: 25, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 280, column: 7, }, end: Position { line: 280, column: 14, }, }, }, ), ], to: String( String_ { parts: [], span: Span { start: Position { line: 280, column: 17, }, end: Position { line: 280, column: 19, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 281, column: 7, }, end: Position { line: 281, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalExpression", span: Span { start: Position { line: 281, column: 17, }, end: Position { line: 281, column: 34, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "\"CLASSPATH=$CLASSPATH:", span: Span { start: Position { line: 281, column: 37, }, end: Position { line: 281, column: 59, }, }, }, ), Raw( PartRaw { content: "$", span: Span { start: Position { line: 281, column: 37, }, end: Position { line: 281, column: 62, }, }, }, ), Raw( PartRaw { content: "{extraJar}\"", span: Span { start: Position { line: 281, column: 37, }, end: Position { line: 281, column: 73, }, }, }, ), ], span: Span { start: Position { line: 281, column: 35, }, end: Position { line: 281, column: 75, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 282, column: 7, }, end: Position { line: 282, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 282, column: 21, }, end: Position { line: 282, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Extra shell lines to be appended onto {file}`cassandra-env.sh`.\n", span: Span { start: Position { line: 283, column: 1, }, end: Position { line: 284, column: 7, }, }, }, ), ], span: Span { start: Position { line: 282, column: 27, }, end: Position { line: 284, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 278, column: 27, }, end: Position { line: 285, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "fullRepairInterval", span: Span { start: Position { line: 287, column: 5, }, end: Position { line: 287, column: 23, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 287, column: 26, }, end: Position { line: 287, column: 34, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 288, column: 7, }, end: Position { line: 288, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 288, column: 14, }, end: Position { line: 288, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 288, column: 20, }, end: Position { line: 288, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 288, column: 27, }, end: Position { line: 288, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 288, column: 33, }, end: Position { line: 288, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 289, column: 7, }, end: Position { line: 289, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "3w", span: Span { start: Position { line: 289, column: 18, }, end: Position { line: 289, column: 20, }, }, }, ), ], span: Span { start: Position { line: 289, column: 17, }, end: Position { line: 289, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 290, column: 7, }, end: Position { line: 290, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 290, column: 17, }, end: Position { line: 290, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 291, column: 7, }, end: Position { line: 291, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 291, column: 21, }, end: Position { line: 291, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Set the interval how often full repairs are run, i.e.\n{command}`nodetool repair --full` is executed. See\n\nfor more information.\n\nSet to `null` to disable full repairs.\n", span: Span { start: Position { line: 292, column: 1, }, end: Position { line: 298, column: 7, }, }, }, ), ], span: Span { start: Position { line: 291, column: 27, }, end: Position { line: 298, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 287, column: 35, }, end: Position { line: 299, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "fullRepairOptions", span: Span { start: Position { line: 301, column: 5, }, end: Position { line: 301, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 301, column: 25, }, end: Position { line: 301, column: 33, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 302, column: 7, }, end: Position { line: 302, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 302, column: 14, }, end: Position { line: 302, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 302, column: 20, }, end: Position { line: 302, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 302, column: 27, }, end: Position { line: 302, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 302, column: 33, }, end: Position { line: 302, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 303, column: 7, }, end: Position { line: 303, column: 14, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 303, column: 17, }, end: Position { line: 303, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 304, column: 7, }, end: Position { line: 304, column: 14, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "--partitioner-range", span: Span { start: Position { line: 304, column: 20, }, end: Position { line: 304, column: 39, }, }, }, ), ], span: Span { start: Position { line: 304, column: 19, }, end: Position { line: 304, column: 40, }, }, }, ), ], span: Span { start: Position { line: 304, column: 17, }, end: Position { line: 304, column: 42, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 305, column: 7, }, end: Position { line: 305, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 305, column: 21, }, end: Position { line: 305, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Options passed through to the full repair command.\n", span: Span { start: Position { line: 306, column: 1, }, end: Position { line: 307, column: 7, }, }, }, ), ], span: Span { start: Position { line: 305, column: 27, }, end: Position { line: 307, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 301, column: 34, }, end: Position { line: 308, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "incrementalRepairInterval", span: Span { start: Position { line: 310, column: 5, }, end: Position { line: 310, column: 30, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 310, column: 33, }, end: Position { line: 310, column: 41, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 311, column: 7, }, end: Position { line: 311, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 311, column: 14, }, end: Position { line: 311, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 311, column: 20, }, end: Position { line: 311, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 311, column: 27, }, end: Position { line: 311, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 311, column: 33, }, end: Position { line: 311, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 312, column: 7, }, end: Position { line: 312, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "3d", span: Span { start: Position { line: 312, column: 18, }, end: Position { line: 312, column: 20, }, }, }, ), ], span: Span { start: Position { line: 312, column: 17, }, end: Position { line: 312, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 313, column: 7, }, end: Position { line: 313, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 313, column: 17, }, end: Position { line: 313, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 314, column: 7, }, end: Position { line: 314, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 314, column: 21, }, end: Position { line: 314, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Set the interval how often incremental repairs are run, i.e.\n{command}`nodetool repair` is executed. See\n\nfor more information.\n\nSet to `null` to disable incremental repairs.\n", span: Span { start: Position { line: 315, column: 1, }, end: Position { line: 321, column: 7, }, }, }, ), ], span: Span { start: Position { line: 314, column: 27, }, end: Position { line: 321, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 310, column: 42, }, end: Position { line: 322, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "incrementalRepairOptions", span: Span { start: Position { line: 324, column: 5, }, end: Position { line: 324, column: 29, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 324, column: 32, }, end: Position { line: 324, column: 40, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 325, column: 7, }, end: Position { line: 325, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 325, column: 14, }, end: Position { line: 325, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 325, column: 20, }, end: Position { line: 325, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 325, column: 27, }, end: Position { line: 325, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 325, column: 33, }, end: Position { line: 325, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 326, column: 7, }, end: Position { line: 326, column: 14, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 326, column: 17, }, end: Position { line: 326, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 327, column: 7, }, end: Position { line: 327, column: 14, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "--partitioner-range", span: Span { start: Position { line: 327, column: 20, }, end: Position { line: 327, column: 39, }, }, }, ), ], span: Span { start: Position { line: 327, column: 19, }, end: Position { line: 327, column: 40, }, }, }, ), ], span: Span { start: Position { line: 327, column: 17, }, end: Position { line: 327, column: 42, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 328, column: 7, }, end: Position { line: 328, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 328, column: 21, }, end: Position { line: 328, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Options passed through to the incremental repair command.\n", span: Span { start: Position { line: 329, column: 1, }, end: Position { line: 330, column: 7, }, }, }, ), ], span: Span { start: Position { line: 328, column: 27, }, end: Position { line: 330, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 324, column: 41, }, end: Position { line: 331, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "maxHeapSize", span: Span { start: Position { line: 333, column: 5, }, end: Position { line: 333, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 333, column: 19, }, end: Position { line: 333, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 334, column: 7, }, end: Position { line: 334, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 334, column: 14, }, end: Position { line: 334, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 334, column: 20, }, end: Position { line: 334, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 334, column: 27, }, end: Position { line: 334, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 334, column: 33, }, end: Position { line: 334, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 335, column: 7, }, end: Position { line: 335, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 335, column: 17, }, end: Position { line: 335, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 336, column: 7, }, end: Position { line: 336, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "4G", span: Span { start: Position { line: 336, column: 18, }, end: Position { line: 336, column: 20, }, }, }, ), ], span: Span { start: Position { line: 336, column: 17, }, end: Position { line: 336, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 337, column: 7, }, end: Position { line: 337, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 337, column: 21, }, end: Position { line: 337, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Must be left blank or set together with {option}`heapNewSize`.\nIf left blank a sensible value for the available amount of RAM and CPU\ncores is calculated.\n\nOverride to set the amount of memory to allocate to the JVM at\nstart-up. For production use you may wish to adjust this for your\nenvironment. `MAX_HEAP_SIZE` is the total amount of memory dedicated\nto the Java heap. `HEAP_NEWSIZE` refers to the size of the young\ngeneration.\n\nThe main trade-off for the young generation is that the larger it\nis, the longer GC pause times will be. The shorter it is, the more\nexpensive GC will be (usually).\n", span: Span { start: Position { line: 338, column: 1, }, end: Position { line: 351, column: 7, }, }, }, ), ], span: Span { start: Position { line: 337, column: 27, }, end: Position { line: 351, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 333, column: 28, }, end: Position { line: 352, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "heapNewSize", span: Span { start: Position { line: 354, column: 5, }, end: Position { line: 354, column: 16, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 354, column: 19, }, end: Position { line: 354, column: 27, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 355, column: 7, }, end: Position { line: 355, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 355, column: 14, }, end: Position { line: 355, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 355, column: 20, }, end: Position { line: 355, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 355, column: 27, }, end: Position { line: 355, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 355, column: 33, }, end: Position { line: 355, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 356, column: 7, }, end: Position { line: 356, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 356, column: 17, }, end: Position { line: 356, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 357, column: 7, }, end: Position { line: 357, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "800M", span: Span { start: Position { line: 357, column: 18, }, end: Position { line: 357, column: 22, }, }, }, ), ], span: Span { start: Position { line: 357, column: 17, }, end: Position { line: 357, column: 23, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 358, column: 7, }, end: Position { line: 358, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 358, column: 21, }, end: Position { line: 358, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Must be left blank or set together with {option}`heapNewSize`.\nIf left blank a sensible value for the available amount of RAM and CPU\ncores is calculated.\n\nOverride to set the amount of memory to allocate to the JVM at\nstart-up. For production use you may wish to adjust this for your\nenvironment. `HEAP_NEWSIZE` refers to the size of the young\ngeneration.\n\nThe main trade-off for the young generation is that the larger it\nis, the longer GC pause times will be. The shorter it is, the more\nexpensive GC will be (usually).\n\nThe example `HEAP_NEWSIZE` assumes a modern 8-core+ machine for decent pause\ntimes. If in doubt, and if you do not particularly want to tweak, go with\n100 MB per physical CPU core.\n", span: Span { start: Position { line: 359, column: 1, }, end: Position { line: 375, column: 7, }, }, }, ), ], span: Span { start: Position { line: 358, column: 27, }, end: Position { line: 375, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 354, column: 28, }, end: Position { line: 376, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "mallocArenaMax", span: Span { start: Position { line: 378, column: 5, }, end: Position { line: 378, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 378, column: 22, }, end: Position { line: 378, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 379, column: 7, }, end: Position { line: 379, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 379, column: 14, }, end: Position { line: 379, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 379, column: 20, }, end: Position { line: 379, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 379, column: 27, }, end: Position { line: 379, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 379, column: 33, }, end: Position { line: 379, column: 36, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 380, column: 7, }, end: Position { line: 380, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "null", span: Span { start: Position { line: 380, column: 17, }, end: Position { line: 380, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 381, column: 7, }, end: Position { line: 381, column: 14, }, }, }, ), ], to: Integer( Integer { value: "4", span: Span { start: Position { line: 381, column: 17, }, end: Position { line: 381, column: 18, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 382, column: 7, }, end: Position { line: 382, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 382, column: 21, }, end: Position { line: 382, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Set this to control the amount of arenas per-thread in glibc.\n", span: Span { start: Position { line: 383, column: 1, }, end: Position { line: 384, column: 7, }, }, }, ), ], span: Span { start: Position { line: 382, column: 27, }, end: Position { line: 384, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 378, column: 31, }, end: Position { line: 385, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "remoteJmx", span: Span { start: Position { line: 387, column: 5, }, end: Position { line: 387, column: 14, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 387, column: 17, }, end: Position { line: 387, column: 25, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 388, column: 7, }, end: Position { line: 388, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 388, column: 14, }, end: Position { line: 388, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "bool", span: Span { start: Position { line: 388, column: 20, }, end: Position { line: 388, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 389, column: 7, }, end: Position { line: 389, column: 14, }, }, }, ), ], to: Identifier( Identifier { id: "false", span: Span { start: Position { line: 389, column: 17, }, end: Position { line: 389, column: 22, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 390, column: 7, }, end: Position { line: 390, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 390, column: 21, }, end: Position { line: 390, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Cassandra ships with JMX accessible *only* from localhost.\nTo enable remote JMX connections set to true.\n\nBe sure to also enable authentication and/or TLS.\nSee: \n", span: Span { start: Position { line: 391, column: 1, }, end: Position { line: 396, column: 7, }, }, }, ), ], span: Span { start: Position { line: 390, column: 27, }, end: Position { line: 396, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 387, column: 26, }, end: Position { line: 397, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "jmxPort", span: Span { start: Position { line: 399, column: 5, }, end: Position { line: 399, column: 12, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 399, column: 15, }, end: Position { line: 399, column: 23, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 400, column: 7, }, end: Position { line: 400, column: 11, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 400, column: 14, }, end: Position { line: 400, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "int", span: Span { start: Position { line: 400, column: 20, }, end: Position { line: 400, column: 23, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 401, column: 7, }, end: Position { line: 401, column: 14, }, }, }, ), ], to: Integer( Integer { value: "7199", span: Span { start: Position { line: 401, column: 17, }, end: Position { line: 401, column: 21, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 402, column: 7, }, end: Position { line: 402, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 402, column: 21, }, end: Position { line: 402, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specifies the default port over which Cassandra will be available for\nJMX connections.\nFor security reasons, you should not expose this port to the internet.\nFirewall it if needed.\n", span: Span { start: Position { line: 403, column: 1, }, end: Position { line: 407, column: 7, }, }, }, ), ], span: Span { start: Position { line: 402, column: 27, }, end: Position { line: 407, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 399, column: 24, }, end: Position { line: 408, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "jmxRoles", span: Span { start: Position { line: 410, column: 5, }, end: Position { line: 410, column: 13, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 410, column: 16, }, end: Position { line: 410, column: 24, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 411, column: 7, }, end: Position { line: 411, column: 14, }, }, }, ), ], to: List( List { elements: [], span: Span { start: Position { line: 411, column: 17, }, end: Position { line: 411, column: 20, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 412, column: 7, }, end: Position { line: 412, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mdDoc", span: Span { start: Position { line: 412, column: 21, }, end: Position { line: 412, column: 26, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Roles that are allowed to access the JMX (e.g. {command}`nodetool`)\nBEWARE: The passwords will be stored world readable in the nix store.\n It's recommended to use your own protected file using\n {option}`jmxRolesFile`\n\nDoesn't work in versions older than 3.11 because they don't like that\nit's world readable.\n", span: Span { start: Position { line: 413, column: 1, }, end: Position { line: 420, column: 7, }, }, }, ), ], span: Span { start: Position { line: 412, column: 27, }, end: Position { line: 420, column: 9, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 421, column: 7, }, end: Position { line: 421, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 421, column: 14, }, end: Position { line: 421, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listOf", span: Span { start: Position { line: 421, column: 20, }, end: Position { line: 421, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 421, column: 28, }, end: Position { line: 421, column: 33, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "submodule", span: Span { start: Position { line: 421, column: 34, }, end: Position { line: 421, column: 43, }, }, }, ), ], default: None, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "options", span: Span { start: Position { line: 422, column: 9, }, end: Position { line: 422, column: 16, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "username", span: Span { start: Position { line: 423, column: 11, }, end: Position { line: 423, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 423, column: 22, }, end: Position { line: 423, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 424, column: 13, }, end: Position { line: 424, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 424, column: 20, }, end: Position { line: 424, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 424, column: 26, }, end: Position { line: 424, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 425, column: 13, }, end: Position { line: 425, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 425, column: 27, }, end: Position { line: 425, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 425, column: 31, }, end: Position { line: 425, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Username for JMX", span: Span { start: Position { line: 425, column: 38, }, end: Position { line: 425, column: 54, }, }, }, ), ], span: Span { start: Position { line: 425, column: 37, }, end: Position { line: 425, column: 55, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 423, column: 31, }, end: Position { line: 426, column: 12, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "password", span: Span { start: Position { line: 427, column: 11, }, end: Position { line: 427, column: 19, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 427, column: 22, }, end: Position { line: 427, column: 30, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 428, column: 13, }, end: Position { line: 428, column: 17, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 428, column: 20, }, end: Position { line: 428, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "str", span: Span { start: Position { line: 428, column: 26, }, end: Position { line: 428, column: 29, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 429, column: 13, }, end: Position { line: 429, column: 24, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 429, column: 27, }, end: Position { line: 429, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 429, column: 31, }, end: Position { line: 429, column: 36, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "Password for JMX", span: Span { start: Position { line: 429, column: 38, }, end: Position { line: 429, column: 54, }, }, }, ), ], span: Span { start: Position { line: 429, column: 37, }, end: Position { line: 429, column: 55, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 427, column: 31, }, end: Position { line: 430, column: 12, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 422, column: 19, }, end: Position { line: 431, column: 10, }, }, }, ), }, ), ], span: Span { start: Position { line: 421, column: 44, }, end: Position { line: 432, column: 8, }, }, }, ), ], }, ), ], }, ), }, ), ], span: Span { start: Position { line: 410, column: 25, }, end: Position { line: 433, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "jmxRolesFile", span: Span { start: Position { line: 435, column: 5, }, end: Position { line: 435, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkOption", span: Span { start: Position { line: 435, column: 20, }, end: Position { line: 435, column: 28, }, }, }, ), arguments: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "type", span: Span { start: Position { line: 436, column: 7, }, end: Position { line: 436, column: 11, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 436, column: 14, }, end: Position { line: 436, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "nullOr", span: Span { start: Position { line: 436, column: 20, }, end: Position { line: 436, column: 26, }, }, }, ), ], default: None, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "types", span: Span { start: Position { line: 436, column: 27, }, end: Position { line: 436, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "path", span: Span { start: Position { line: 436, column: 33, }, end: Position { line: 436, column: 37, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "default", span: Span { start: Position { line: 437, column: 7, }, end: Position { line: 437, column: 14, }, }, }, ), ], to: IfThenElse( IfThenElse { predicate: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "versionAtLeast", span: Span { start: Position { line: 438, column: 12, }, end: Position { line: 438, column: 26, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 438, column: 27, }, end: Position { line: 438, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 438, column: 31, }, end: Position { line: 438, column: 38, }, }, }, ), Raw( PartRaw { content: "version", span: Span { start: Position { line: 438, column: 39, }, end: Position { line: 438, column: 46, }, }, }, ), ], default: None, }, ), String( String_ { parts: [ Raw( PartRaw { content: "3.11", span: Span { start: Position { line: 438, column: 48, }, end: Position { line: 438, column: 52, }, }, }, ), ], span: Span { start: Position { line: 438, column: 47, }, end: Position { line: 438, column: 53, }, }, }, ), ], }, ), then: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "pkgs", span: Span { start: Position { line: 439, column: 14, }, end: Position { line: 439, column: 18, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "writeText", span: Span { start: Position { line: 439, column: 19, }, end: Position { line: 439, column: 28, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: "jmx-roles-file", span: Span { start: Position { line: 439, column: 30, }, end: Position { line: 439, column: 44, }, }, }, ), ], span: Span { start: Position { line: 439, column: 29, }, end: Position { line: 439, column: 45, }, }, }, ), Identifier( Identifier { id: "defaultJmxRolesFile", span: Span { start: Position { line: 439, column: 46, }, end: Position { line: 439, column: 65, }, }, }, ), ], }, ), else_: Identifier( Identifier { id: "null", span: Span { start: Position { line: 440, column: 14, }, end: Position { line: 440, column: 18, }, }, }, ), span: Span { start: Position { line: 438, column: 9, }, end: Position { line: 440, column: 18, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "defaultText", span: Span { start: Position { line: 441, column: 7, }, end: Position { line: 441, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "literalMD", span: Span { start: Position { line: 441, column: 21, }, end: Position { line: 441, column: 30, }, }, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "generated configuration file if version is at least 3.11, otherwise `null`", span: Span { start: Position { line: 441, column: 33, }, end: Position { line: 441, column: 107, }, }, }, ), ], span: Span { start: Position { line: 441, column: 31, }, end: Position { line: 441, column: 109, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "example", span: Span { start: Position { line: 442, column: 7, }, end: Position { line: 442, column: 14, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "/var/lib/cassandra/jmx.password", span: Span { start: Position { line: 442, column: 18, }, end: Position { line: 442, column: 49, }, }, }, ), ], span: Span { start: Position { line: 442, column: 17, }, end: Position { line: 442, column: 50, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 443, column: 7, }, end: Position { line: 443, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 443, column: 21, }, end: Position { line: 443, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mdDoc", span: Span { start: Position { line: 443, column: 25, }, end: Position { line: 443, column: 30, }, }, }, ), ], default: None, }, ), arguments: [ IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "Specify your own jmx roles file.\n\nMake sure the permissions forbid \"others\" from reading the file if\nyou're using Cassandra below version 3.11.\n", span: Span { start: Position { line: 444, column: 1, }, end: Position { line: 448, column: 7, }, }, }, ), ], span: Span { start: Position { line: 443, column: 31, }, end: Position { line: 448, column: 9, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 435, column: 29, }, end: Position { line: 449, column: 6, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 102, column: 32, }, end: Position { line: 450, column: 4, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "config", span: Span { start: Position { line: 452, column: 3, }, end: Position { line: 452, column: 9, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 452, column: 12, }, end: Position { line: 452, column: 16, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 452, column: 17, }, end: Position { line: 452, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "enable", span: Span { start: Position { line: 452, column: 21, }, end: Position { line: 452, column: 27, }, }, }, ), ], default: None, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertions", span: Span { start: Position { line: 453, column: 5, }, end: Position { line: 453, column: 15, }, }, }, ), ], to: List( List { elements: [ Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 455, column: 9, }, end: Position { line: 455, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 455, column: 22, }, end: Position { line: 455, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listenAddress", span: Span { start: Position { line: 455, column: 26, }, end: Position { line: 455, column: 39, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 455, column: 43, }, end: Position { line: 455, column: 47, }, }, }, ), }, ), operator: NotEqualTo, right: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 455, column: 53, }, end: Position { line: 455, column: 56, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "listenInterface", span: Span { start: Position { line: 455, column: 57, }, end: Position { line: 455, column: 72, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 455, column: 76, }, end: Position { line: 455, column: 80, }, }, }, ), }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 456, column: 9, }, end: Position { line: 456, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "You have to set either listenAddress or listenInterface", span: Span { start: Position { line: 456, column: 20, }, end: Position { line: 456, column: 75, }, }, }, ), ], span: Span { start: Position { line: 456, column: 19, }, end: Position { line: 456, column: 76, }, }, }, ), }, ), ], span: Span { start: Position { line: 454, column: 7, }, end: Position { line: 457, column: 8, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 459, column: 9, }, end: Position { line: 459, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 459, column: 22, }, end: Position { line: 459, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "rpcAddress", span: Span { start: Position { line: 459, column: 26, }, end: Position { line: 459, column: 36, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 459, column: 40, }, end: Position { line: 459, column: 44, }, }, }, ), }, ), operator: NotEqualTo, right: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 459, column: 50, }, end: Position { line: 459, column: 53, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "rpcInterface", span: Span { start: Position { line: 459, column: 54, }, end: Position { line: 459, column: 66, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 459, column: 70, }, end: Position { line: 459, column: 74, }, }, }, ), }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 460, column: 9, }, end: Position { line: 460, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "You have to set either rpcAddress or rpcInterface", span: Span { start: Position { line: 460, column: 20, }, end: Position { line: 460, column: 69, }, }, }, ), ], span: Span { start: Position { line: 460, column: 19, }, end: Position { line: 460, column: 70, }, }, }, ), }, ), ], span: Span { start: Position { line: 458, column: 7, }, end: Position { line: 461, column: 8, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 463, column: 9, }, end: Position { line: 463, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 463, column: 22, }, end: Position { line: 463, column: 25, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "maxHeapSize", span: Span { start: Position { line: 463, column: 26, }, end: Position { line: 463, column: 37, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 463, column: 41, }, end: Position { line: 463, column: 45, }, }, }, ), }, ), operator: EqualTo, right: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 463, column: 51, }, end: Position { line: 463, column: 54, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "heapNewSize", span: Span { start: Position { line: 463, column: 55, }, end: Position { line: 463, column: 66, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 463, column: 70, }, end: Position { line: 463, column: 74, }, }, }, ), }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 464, column: 9, }, end: Position { line: 464, column: 16, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "If you set either of maxHeapSize or heapNewSize you have to set both", span: Span { start: Position { line: 464, column: 20, }, end: Position { line: 464, column: 88, }, }, }, ), ], span: Span { start: Position { line: 464, column: 19, }, end: Position { line: 464, column: 89, }, }, }, ), }, ), ], span: Span { start: Position { line: 462, column: 7, }, end: Position { line: 465, column: 8, }, }, }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "assertion", span: Span { start: Position { line: 467, column: 9, }, end: Position { line: 467, column: 18, }, }, }, ), ], to: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 467, column: 21, }, end: Position { line: 467, column: 24, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "remoteJmx", span: Span { start: Position { line: 467, column: 25, }, end: Position { line: 467, column: 34, }, }, }, ), ], default: None, }, ), operator: Implication, right: BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 467, column: 38, }, end: Position { line: 467, column: 41, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "jmxRolesFile", span: Span { start: Position { line: 467, column: 42, }, end: Position { line: 467, column: 54, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 467, column: 58, }, end: Position { line: 467, column: 62, }, }, }, ), }, ), }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "message", span: Span { start: Position { line: 468, column: 9, }, end: Position { line: 468, column: 16, }, }, }, ), ], to: IndentedString( IndentedString { parts: [ Raw( PartRaw { content: "If you want JMX available remotely you need to set a password using\njmxRoles or jmxRolesFile if\nusing Cassandra older than v3.11.\n", span: Span { start: Position { line: 469, column: 1, }, end: Position { line: 472, column: 9, }, }, }, ), ], span: Span { start: Position { line: 468, column: 19, }, end: Position { line: 472, column: 11, }, }, }, ), }, ), ], span: Span { start: Position { line: 466, column: 7, }, end: Position { line: 473, column: 8, }, }, }, ), ], span: Span { start: Position { line: 453, column: 18, }, end: Position { line: 474, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "users", span: Span { start: Position { line: 475, column: 5, }, end: Position { line: 475, column: 10, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 475, column: 13, }, end: Position { line: 475, column: 17, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 475, column: 19, }, end: Position { line: 475, column: 22, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 475, column: 23, }, end: Position { line: 475, column: 27, }, }, }, ), ], default: None, }, ), operator: EqualTo, right: Identifier( Identifier { id: "defaultUser", span: Span { start: Position { line: 475, column: 31, }, end: Position { line: 475, column: 42, }, }, }, ), }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "users", span: Span { start: Position { line: 476, column: 7, }, end: Position { line: 476, column: 12, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "defaultUser", span: Span { start: Position { line: 476, column: 15, }, end: Position { line: 476, column: 26, }, }, }, ), }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 477, column: 9, }, end: Position { line: 477, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 477, column: 17, }, end: Position { line: 477, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 477, column: 21, }, end: Position { line: 477, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "home", span: Span { start: Position { line: 478, column: 9, }, end: Position { line: 478, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 478, column: 16, }, end: Position { line: 478, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "homeDir", span: Span { start: Position { line: 478, column: 20, }, end: Position { line: 478, column: 27, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "createHome", span: Span { start: Position { line: 479, column: 9, }, end: Position { line: 479, column: 19, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 479, column: 22, }, end: Position { line: 479, column: 26, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "uid", span: Span { start: Position { line: 480, column: 9, }, end: Position { line: 480, column: 12, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 480, column: 15, }, end: Position { line: 480, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "ids", span: Span { start: Position { line: 480, column: 22, }, end: Position { line: 480, column: 25, }, }, }, ), Raw( PartRaw { content: "uids", span: Span { start: Position { line: 480, column: 26, }, end: Position { line: 480, column: 30, }, }, }, ), Raw( PartRaw { content: "cassandra", span: Span { start: Position { line: 480, column: 31, }, end: Position { line: 480, column: 40, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 481, column: 9, }, end: Position { line: 481, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Cassandra service user", span: Span { start: Position { line: 481, column: 24, }, end: Position { line: 481, column: 46, }, }, }, ), ], span: Span { start: Position { line: 481, column: 23, }, end: Position { line: 481, column: 47, }, }, }, ), }, ), ], span: Span { start: Position { line: 476, column: 30, }, end: Position { line: 482, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "groups", span: Span { start: Position { line: 483, column: 7, }, end: Position { line: 483, column: 13, }, }, }, ), Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "defaultUser", span: Span { start: Position { line: 483, column: 16, }, end: Position { line: 483, column: 27, }, }, }, ), }, ), Raw( PartRaw { content: "gid", span: Span { start: Position { line: 483, column: 29, }, end: Position { line: 483, column: 32, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "config", span: Span { start: Position { line: 483, column: 35, }, end: Position { line: 483, column: 41, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "ids", span: Span { start: Position { line: 483, column: 42, }, end: Position { line: 483, column: 45, }, }, }, ), Raw( PartRaw { content: "gids", span: Span { start: Position { line: 483, column: 46, }, end: Position { line: 483, column: 50, }, }, }, ), Raw( PartRaw { content: "cassandra", span: Span { start: Position { line: 483, column: 51, }, end: Position { line: 483, column: 60, }, }, }, ), ], default: None, }, ), }, ), ], span: Span { start: Position { line: 475, column: 44, }, end: Position { line: 484, column: 6, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 486, column: 5, }, end: Position { line: 486, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 486, column: 13, }, end: Position { line: 486, column: 21, }, }, }, ), Raw( PartRaw { content: "cassandra", span: Span { start: Position { line: 486, column: 22, }, end: Position { line: 486, column: 31, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 487, column: 7, }, end: Position { line: 487, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Apache Cassandra service", span: Span { start: Position { line: 487, column: 22, }, end: Position { line: 487, column: 46, }, }, }, ), ], span: Span { start: Position { line: 487, column: 21, }, end: Position { line: 487, column: 47, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 488, column: 7, }, end: Position { line: 488, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "network.target", span: Span { start: Position { line: 488, column: 18, }, end: Position { line: 488, column: 32, }, }, }, ), ], span: Span { start: Position { line: 488, column: 17, }, end: Position { line: 488, column: 33, }, }, }, ), ], span: Span { start: Position { line: 488, column: 15, }, end: Position { line: 488, column: 35, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "environment", span: Span { start: Position { line: 489, column: 7, }, end: Position { line: 489, column: 18, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "CASSANDRA_CONF", span: Span { start: Position { line: 490, column: 9, }, end: Position { line: 490, column: 23, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: Identifier( Identifier { id: "cassandraEtc", span: Span { start: Position { line: 490, column: 29, }, end: Position { line: 490, column: 41, }, }, }, ), }, ), ], span: Span { start: Position { line: 490, column: 26, }, end: Position { line: 490, column: 43, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "JVM_OPTS", span: Span { start: Position { line: 491, column: 9, }, end: Position { line: 491, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "builtins", span: Span { start: Position { line: 491, column: 20, }, end: Position { line: 491, column: 28, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "concatStringsSep", span: Span { start: Position { line: 491, column: 29, }, end: Position { line: 491, column: 45, }, }, }, ), ], default: None, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: " ", span: Span { start: Position { line: 491, column: 47, }, end: Position { line: 491, column: 48, }, }, }, ), ], span: Span { start: Position { line: 491, column: 46, }, end: Position { line: 491, column: 49, }, }, }, ), Identifier( Identifier { id: "fullJvmOptions", span: Span { start: Position { line: 491, column: 50, }, end: Position { line: 491, column: 64, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "MAX_HEAP_SIZE", span: Span { start: Position { line: 492, column: 9, }, end: Position { line: 492, column: 22, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 492, column: 25, }, end: Position { line: 492, column: 33, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 492, column: 34, }, end: Position { line: 492, column: 37, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "maxHeapSize", span: Span { start: Position { line: 492, column: 38, }, end: Position { line: 492, column: 49, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "HEAP_NEWSIZE", span: Span { start: Position { line: 493, column: 9, }, end: Position { line: 493, column: 21, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 493, column: 24, }, end: Position { line: 493, column: 32, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 493, column: 33, }, end: Position { line: 493, column: 36, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "heapNewSize", span: Span { start: Position { line: 493, column: 37, }, end: Position { line: 493, column: 48, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "MALLOC_ARENA_MAX", span: Span { start: Position { line: 494, column: 9, }, end: Position { line: 494, column: 25, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 494, column: 28, }, end: Position { line: 494, column: 36, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 494, column: 37, }, end: Position { line: 494, column: 40, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "mallocArenaMax", span: Span { start: Position { line: 494, column: 41, }, end: Position { line: 494, column: 55, }, }, }, ), ], default: None, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "LOCAL_JMX", span: Span { start: Position { line: 495, column: 9, }, end: Position { line: 495, column: 18, }, }, }, ), ], to: IfThenElse( IfThenElse { predicate: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 495, column: 24, }, end: Position { line: 495, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "remoteJmx", span: Span { start: Position { line: 495, column: 28, }, end: Position { line: 495, column: 37, }, }, }, ), ], default: None, }, ), then: String( String_ { parts: [ Raw( PartRaw { content: "no", span: Span { start: Position { line: 495, column: 44, }, end: Position { line: 495, column: 46, }, }, }, ), ], span: Span { start: Position { line: 495, column: 43, }, end: Position { line: 495, column: 47, }, }, }, ), else_: String( String_ { parts: [ Raw( PartRaw { content: "yes", span: Span { start: Position { line: 495, column: 54, }, end: Position { line: 495, column: 57, }, }, }, ), ], span: Span { start: Position { line: 495, column: 53, }, end: Position { line: 495, column: 58, }, }, }, ), span: Span { start: Position { line: 495, column: 21, }, end: Position { line: 495, column: 58, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "JMX_PORT", span: Span { start: Position { line: 496, column: 9, }, end: Position { line: 496, column: 17, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "toString", span: Span { start: Position { line: 496, column: 20, }, end: Position { line: 496, column: 28, }, }, }, ), arguments: [ PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 496, column: 29, }, end: Position { line: 496, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "jmxPort", span: Span { start: Position { line: 496, column: 33, }, end: Position { line: 496, column: 40, }, }, }, ), ], default: None, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 489, column: 21, }, end: Position { line: 497, column: 8, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 498, column: 7, }, end: Position { line: 498, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "multi-user.target", span: Span { start: Position { line: 498, column: 21, }, end: Position { line: 498, column: 38, }, }, }, ), ], span: Span { start: Position { line: 498, column: 20, }, end: Position { line: 498, column: 39, }, }, }, ), ], span: Span { start: Position { line: 498, column: 18, }, end: Position { line: 498, column: 41, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 499, column: 7, }, end: Position { line: 499, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 500, column: 9, }, end: Position { line: 500, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 500, column: 16, }, end: Position { line: 500, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 500, column: 20, }, end: Position { line: 500, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Group", span: Span { start: Position { line: 501, column: 9, }, end: Position { line: 501, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 501, column: 17, }, end: Position { line: 501, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 501, column: 21, }, end: Position { line: 501, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 502, column: 9, }, end: Position { line: 502, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 502, column: 24, }, end: Position { line: 502, column: 27, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 502, column: 28, }, end: Position { line: 502, column: 35, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/cassandra -f", span: Span { start: Position { line: 502, column: 22, }, end: Position { line: 502, column: 53, }, }, }, ), ], span: Span { start: Position { line: 502, column: 21, }, end: Position { line: 502, column: 54, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "SuccessExitStatus", span: Span { start: Position { line: 503, column: 9, }, end: Position { line: 503, column: 26, }, }, }, ), ], to: Integer( Integer { value: "143", span: Span { start: Position { line: 503, column: 29, }, end: Position { line: 503, column: 32, }, }, }, ), }, ), ], span: Span { start: Position { line: 499, column: 23, }, end: Position { line: 504, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 486, column: 34, }, end: Position { line: 505, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 507, column: 5, }, end: Position { line: 507, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 507, column: 13, }, end: Position { line: 507, column: 21, }, }, }, ), Raw( PartRaw { content: "cassandra-full-repair", span: Span { start: Position { line: 507, column: 22, }, end: Position { line: 507, column: 43, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 508, column: 7, }, end: Position { line: 508, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Perform a full repair on this Cassandra node", span: Span { start: Position { line: 508, column: 22, }, end: Position { line: 508, column: 66, }, }, }, ), ], span: Span { start: Position { line: 508, column: 21, }, end: Position { line: 508, column: 67, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 509, column: 7, }, end: Position { line: 509, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "cassandra.service", span: Span { start: Position { line: 509, column: 18, }, end: Position { line: 509, column: 35, }, }, }, ), ], span: Span { start: Position { line: 509, column: 17, }, end: Position { line: 509, column: 36, }, }, }, ), ], span: Span { start: Position { line: 509, column: 15, }, end: Position { line: 509, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "requires", span: Span { start: Position { line: 510, column: 7, }, end: Position { line: 510, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "cassandra.service", span: Span { start: Position { line: 510, column: 21, }, end: Position { line: 510, column: 38, }, }, }, ), ], span: Span { start: Position { line: 510, column: 20, }, end: Position { line: 510, column: 39, }, }, }, ), ], span: Span { start: Position { line: 510, column: 18, }, end: Position { line: 510, column: 41, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 511, column: 7, }, end: Position { line: 511, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 512, column: 9, }, end: Position { line: 512, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 512, column: 16, }, end: Position { line: 512, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 512, column: 20, }, end: Position { line: 512, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Group", span: Span { start: Position { line: 513, column: 9, }, end: Position { line: 513, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 513, column: 17, }, end: Position { line: 513, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 513, column: 21, }, end: Position { line: 513, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 514, column: 9, }, end: Position { line: 514, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 515, column: 11, }, end: Position { line: 515, column: 27, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: " ", span: Span { start: Position { line: 515, column: 29, }, end: Position { line: 515, column: 30, }, }, }, ), ], span: Span { start: Position { line: 515, column: 28, }, end: Position { line: 515, column: 31, }, }, }, ), BinaryOperation( BinaryOperation { left: List( List { elements: [ String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 517, column: 18, }, end: Position { line: 517, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 517, column: 22, }, end: Position { line: 517, column: 29, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/nodetool", span: Span { start: Position { line: 517, column: 16, }, end: Position { line: 517, column: 43, }, }, }, ), ], span: Span { start: Position { line: 517, column: 15, }, end: Position { line: 517, column: 44, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "repair", span: Span { start: Position { line: 518, column: 16, }, end: Position { line: 518, column: 22, }, }, }, ), ], span: Span { start: Position { line: 518, column: 15, }, end: Position { line: 518, column: 23, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "--full", span: Span { start: Position { line: 519, column: 16, }, end: Position { line: 519, column: 22, }, }, }, ), ], span: Span { start: Position { line: 519, column: 15, }, end: Position { line: 519, column: 23, }, }, }, ), ], span: Span { start: Position { line: 516, column: 14, }, end: Position { line: 520, column: 14, }, }, }, ), operator: Concatenation, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 520, column: 18, }, end: Position { line: 520, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "fullRepairOptions", span: Span { start: Position { line: 520, column: 22, }, end: Position { line: 520, column: 39, }, }, }, ), ], default: None, }, ), }, ), ], }, ), }, ), ], span: Span { start: Position { line: 511, column: 23, }, end: Position { line: 521, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 507, column: 46, }, end: Position { line: 522, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 524, column: 5, }, end: Position { line: 524, column: 12, }, }, }, ), Raw( PartRaw { content: "timers", span: Span { start: Position { line: 524, column: 13, }, end: Position { line: 524, column: 19, }, }, }, ), Raw( PartRaw { content: "cassandra-full-repair", span: Span { start: Position { line: 524, column: 20, }, end: Position { line: 524, column: 41, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 525, column: 7, }, end: Position { line: 525, column: 11, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 525, column: 13, }, end: Position { line: 525, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "fullRepairInterval", span: Span { start: Position { line: 525, column: 17, }, end: Position { line: 525, column: 35, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 525, column: 39, }, end: Position { line: 525, column: 43, }, }, }, ), }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 526, column: 9, }, end: Position { line: 526, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Schedule full repairs on Cassandra", span: Span { start: Position { line: 526, column: 24, }, end: Position { line: 526, column: 58, }, }, }, ), ], span: Span { start: Position { line: 526, column: 23, }, end: Position { line: 526, column: 59, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 527, column: 9, }, end: Position { line: 527, column: 17, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "timers.target", span: Span { start: Position { line: 527, column: 23, }, end: Position { line: 527, column: 36, }, }, }, ), ], span: Span { start: Position { line: 527, column: 22, }, end: Position { line: 527, column: 37, }, }, }, ), ], span: Span { start: Position { line: 527, column: 20, }, end: Position { line: 527, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "timerConfig", span: Span { start: Position { line: 528, column: 9, }, end: Position { line: 528, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "OnBootSec", span: Span { start: Position { line: 529, column: 11, }, end: Position { line: 529, column: 20, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 529, column: 23, }, end: Position { line: 529, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "fullRepairInterval", span: Span { start: Position { line: 529, column: 27, }, end: Position { line: 529, column: 45, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "OnUnitActiveSec", span: Span { start: Position { line: 530, column: 11, }, end: Position { line: 530, column: 26, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 530, column: 29, }, end: Position { line: 530, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "fullRepairInterval", span: Span { start: Position { line: 530, column: 33, }, end: Position { line: 530, column: 51, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Persistent", span: Span { start: Position { line: 531, column: 11, }, end: Position { line: 531, column: 21, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 531, column: 24, }, end: Position { line: 531, column: 28, }, }, }, ), }, ), ], span: Span { start: Position { line: 528, column: 23, }, end: Position { line: 532, column: 10, }, }, }, ), }, ), ], span: Span { start: Position { line: 525, column: 45, }, end: Position { line: 533, column: 8, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 535, column: 5, }, end: Position { line: 535, column: 12, }, }, }, ), Raw( PartRaw { content: "services", span: Span { start: Position { line: 535, column: 13, }, end: Position { line: 535, column: 21, }, }, }, ), Raw( PartRaw { content: "cassandra-incremental-repair", span: Span { start: Position { line: 535, column: 22, }, end: Position { line: 535, column: 50, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 536, column: 7, }, end: Position { line: 536, column: 18, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Perform an incremental repair on this cassandra node.", span: Span { start: Position { line: 536, column: 22, }, end: Position { line: 536, column: 75, }, }, }, ), ], span: Span { start: Position { line: 536, column: 21, }, end: Position { line: 536, column: 76, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "after", span: Span { start: Position { line: 537, column: 7, }, end: Position { line: 537, column: 12, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "cassandra.service", span: Span { start: Position { line: 537, column: 18, }, end: Position { line: 537, column: 35, }, }, }, ), ], span: Span { start: Position { line: 537, column: 17, }, end: Position { line: 537, column: 36, }, }, }, ), ], span: Span { start: Position { line: 537, column: 15, }, end: Position { line: 537, column: 38, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "requires", span: Span { start: Position { line: 538, column: 7, }, end: Position { line: 538, column: 15, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "cassandra.service", span: Span { start: Position { line: 538, column: 21, }, end: Position { line: 538, column: 38, }, }, }, ), ], span: Span { start: Position { line: 538, column: 20, }, end: Position { line: 538, column: 39, }, }, }, ), ], span: Span { start: Position { line: 538, column: 18, }, end: Position { line: 538, column: 41, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "serviceConfig", span: Span { start: Position { line: 539, column: 7, }, end: Position { line: 539, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "User", span: Span { start: Position { line: 540, column: 9, }, end: Position { line: 540, column: 13, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 540, column: 16, }, end: Position { line: 540, column: 19, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "user", span: Span { start: Position { line: 540, column: 20, }, end: Position { line: 540, column: 24, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Group", span: Span { start: Position { line: 541, column: 9, }, end: Position { line: 541, column: 14, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 541, column: 17, }, end: Position { line: 541, column: 20, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "group", span: Span { start: Position { line: 541, column: 21, }, end: Position { line: 541, column: 26, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "ExecStart", span: Span { start: Position { line: 542, column: 9, }, end: Position { line: 542, column: 18, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "concatStringsSep", span: Span { start: Position { line: 543, column: 11, }, end: Position { line: 543, column: 27, }, }, }, ), arguments: [ String( String_ { parts: [ Raw( PartRaw { content: " ", span: Span { start: Position { line: 543, column: 29, }, end: Position { line: 543, column: 30, }, }, }, ), ], span: Span { start: Position { line: 543, column: 28, }, end: Position { line: 543, column: 31, }, }, }, ), BinaryOperation( BinaryOperation { left: List( List { elements: [ String( String_ { parts: [ Interpolation( PartInterpolation { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 545, column: 18, }, end: Position { line: 545, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "package", span: Span { start: Position { line: 545, column: 22, }, end: Position { line: 545, column: 29, }, }, }, ), ], default: None, }, ), }, ), Raw( PartRaw { content: "/bin/nodetool", span: Span { start: Position { line: 545, column: 16, }, end: Position { line: 545, column: 43, }, }, }, ), ], span: Span { start: Position { line: 545, column: 15, }, end: Position { line: 545, column: 44, }, }, }, ), String( String_ { parts: [ Raw( PartRaw { content: "repair", span: Span { start: Position { line: 546, column: 16, }, end: Position { line: 546, column: 22, }, }, }, ), ], span: Span { start: Position { line: 546, column: 15, }, end: Position { line: 546, column: 23, }, }, }, ), ], span: Span { start: Position { line: 544, column: 14, }, end: Position { line: 547, column: 14, }, }, }, ), operator: Concatenation, right: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 547, column: 18, }, end: Position { line: 547, column: 21, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "incrementalRepairOptions", span: Span { start: Position { line: 547, column: 22, }, end: Position { line: 547, column: 46, }, }, }, ), ], default: None, }, ), }, ), ], }, ), }, ), ], span: Span { start: Position { line: 539, column: 23, }, end: Position { line: 548, column: 8, }, }, }, ), }, ), ], span: Span { start: Position { line: 535, column: 53, }, end: Position { line: 549, column: 6, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "systemd", span: Span { start: Position { line: 551, column: 5, }, end: Position { line: 551, column: 12, }, }, }, ), Raw( PartRaw { content: "timers", span: Span { start: Position { line: 551, column: 13, }, end: Position { line: 551, column: 19, }, }, }, ), Raw( PartRaw { content: "cassandra-incremental-repair", span: Span { start: Position { line: 551, column: 20, }, end: Position { line: 551, column: 48, }, }, }, ), ], to: FunctionApplication( FunctionApplication { function: Identifier( Identifier { id: "mkIf", span: Span { start: Position { line: 552, column: 7, }, end: Position { line: 552, column: 11, }, }, }, ), arguments: [ BinaryOperation( BinaryOperation { left: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 552, column: 13, }, end: Position { line: 552, column: 16, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "incrementalRepairInterval", span: Span { start: Position { line: 552, column: 17, }, end: Position { line: 552, column: 42, }, }, }, ), ], default: None, }, ), operator: NotEqualTo, right: Identifier( Identifier { id: "null", span: Span { start: Position { line: 552, column: 46, }, end: Position { line: 552, column: 50, }, }, }, ), }, ), Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "description", span: Span { start: Position { line: 553, column: 9, }, end: Position { line: 553, column: 20, }, }, }, ), ], to: String( String_ { parts: [ Raw( PartRaw { content: "Schedule incremental repairs on Cassandra", span: Span { start: Position { line: 553, column: 24, }, end: Position { line: 553, column: 65, }, }, }, ), ], span: Span { start: Position { line: 553, column: 23, }, end: Position { line: 553, column: 66, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "wantedBy", span: Span { start: Position { line: 554, column: 9, }, end: Position { line: 554, column: 17, }, }, }, ), ], to: List( List { elements: [ String( String_ { parts: [ Raw( PartRaw { content: "timers.target", span: Span { start: Position { line: 554, column: 23, }, end: Position { line: 554, column: 36, }, }, }, ), ], span: Span { start: Position { line: 554, column: 22, }, end: Position { line: 554, column: 37, }, }, }, ), ], span: Span { start: Position { line: 554, column: 20, }, end: Position { line: 554, column: 39, }, }, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "timerConfig", span: Span { start: Position { line: 555, column: 9, }, end: Position { line: 555, column: 20, }, }, }, ), ], to: Map( Map { recursive: false, bindings: [ KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "OnBootSec", span: Span { start: Position { line: 556, column: 11, }, end: Position { line: 556, column: 20, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 556, column: 23, }, end: Position { line: 556, column: 26, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "incrementalRepairInterval", span: Span { start: Position { line: 556, column: 27, }, end: Position { line: 556, column: 52, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "OnUnitActiveSec", span: Span { start: Position { line: 557, column: 11, }, end: Position { line: 557, column: 26, }, }, }, ), ], to: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "cfg", span: Span { start: Position { line: 557, column: 29, }, end: Position { line: 557, column: 32, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "incrementalRepairInterval", span: Span { start: Position { line: 557, column: 33, }, end: Position { line: 557, column: 58, }, }, }, ), ], default: None, }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "Persistent", span: Span { start: Position { line: 558, column: 11, }, end: Position { line: 558, column: 21, }, }, }, ), ], to: Identifier( Identifier { id: "true", span: Span { start: Position { line: 558, column: 24, }, end: Position { line: 558, column: 28, }, }, }, ), }, ), ], span: Span { start: Position { line: 555, column: 23, }, end: Position { line: 559, column: 10, }, }, }, ), }, ), ], span: Span { start: Position { line: 552, column: 52, }, end: Position { line: 560, column: 8, }, }, }, ), ], }, ), }, ), ], span: Span { start: Position { line: 452, column: 28, }, end: Position { line: 561, column: 4, }, }, }, ), ], }, ), }, ), KeyValue( BindingKeyValue { from: [ Raw( PartRaw { content: "meta", span: Span { start: Position { line: 563, column: 3, }, end: Position { line: 563, column: 7, }, }, }, ), Raw( PartRaw { content: "maintainers", span: Span { start: Position { line: 563, column: 8, }, end: Position { line: 563, column: 19, }, }, }, ), ], to: With( With { expression: PropertyAccess( PropertyAccess { expression: Identifier( Identifier { id: "lib", span: Span { start: Position { line: 563, column: 27, }, end: Position { line: 563, column: 30, }, }, }, ), attribute_path: [ Raw( PartRaw { content: "maintainers", span: Span { start: Position { line: 563, column: 31, }, end: Position { line: 563, column: 42, }, }, }, ), ], default: None, }, ), target: List( List { elements: [ Identifier( Identifier { id: "roberth", span: Span { start: Position { line: 563, column: 46, }, end: Position { line: 563, column: 53, }, }, }, ), ], span: Span { start: Position { line: 563, column: 44, }, end: Position { line: 563, column: 55, }, }, }, ), span: Span { start: Position { line: 563, column: 22, }, end: Position { line: 563, column: 55, }, }, }, ), }, ), ], span: Span { start: Position { line: 101, column: 1, }, end: Position { line: 564, column: 2, }, }, }, ), span: Span { start: Position { line: 3, column: 1, }, end: Position { line: 564, column: 2, }, }, }, ), span: Span { start: Position { line: 1, column: 1, }, end: Position { line: 564, column: 2, }, }, }, )