because you're using var and its public all this part
get() = field
set(value) { field = value }
is redundant and the Kotlin compiler should alert about it.
also, you can see that when you compile your code to kotlin byte code with or without the setter and getter
the outcome is the same
@Metadata(
mv = {1, 4, 1},
bv = {1, 0, 3},
k = 1,
d1 = {"\u0000\u0014\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0002\b\u0005\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002R\u001a\u0010\u0003\u001a\u00020\u0004X\u0086\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u0005\u0010\u0006\"\u0004\b\u0007\u0010\b¨\u0006\t"},
d2 = {"Lorg/example/Fo;", "", "()V", "someProperty", "", "getSomeProperty", "()Ljava/lang/String;", "setSomeProperty", "(Ljava/lang/String;)V", "stream"}
)
public final class Fo {
@NotNull
private String someProperty = "defaultValue";
@NotNull
public final String getSomeProperty() {
return this.someProperty;
}
public final void setSomeProperty(@NotNull String var1) {
Intrinsics.checkNotNullParameter(var1, "<set-?>");
this.someProperty = var1;
}
}
and last for the order question, The full syntax for declaring a property is
var <propertyName>[: <PropertyType>] [= <property_initializer>]
[<getter>]
[<setter>]
so you cant add anything in between the declaration parts